Tạo short url goo.gl bằng php

Short url có tác dụng rất lớn trong việc gửi link cho mọi người .Short url có những ưu điểm sau :

  1. Short url ngắn hơn link gốc
  2. Đếm được số lượt xem link mình gửi
  3. Google index nhanh hơn

Dưới đây là các bước tạo 1 trang short url :

Bước 1 : Tạo google api key :

Các bạn làm theo các bước trong video sau

https://www.youtube.com/watch?v=LnnV007_fZ4&feature=youtu.be

1 : Tạo project 

2 Enable short url api

3 Create key

Sau đó chúng ta có 1 key

Bước 2 : Code php

Mình code theo mô hình mvc bằng yii2 .

Tạo model :

<?php
namespace frontend\models;
use yii\base\Model;

class ShorturlForm extends Model
{
	public $input;
	public $output;
	public $key;
	public function rules()
	{
		return [
		    [['input','output'],'string','min'=>'4','message'=>'Chuỗi nhập vào quá ngắn'],
			[['input'],'required'],
			['key','string'],
		];
	}
	public function attributeLabels()
	{
		return [
		    'input'=>'Nhập link đầu vào',
		     'key'=>'Key lấy từ google console nếu không để trống',
		];
	}
}

Tiếp theo controller mình code như sau :

<?php
namespace frontend\controllers;
use yii\web\Controller;
use frontend\models\ShorturlForm;
use yii\filters\AccessControl;

class ShorturlController extends Controller {
	function behaviors() {
		return [ 
				'access' => [ 
						'class' => AccessControl::className (),
						'rules' => [ 
								[
								'allow' => true,
								'actions'=>['index'],
								'roles' => ['?'],
								],
						] 
				] 
		];
	}
	
	public function actionIndex() {
		$model = new ShorturlForm ();
		if ($model->load ( \Yii::$app->request->post () ) && $model->validate ()) {
			/*
			 * Các bước lấy api key lấy ở
			 * vào http://code.google.com/apis/console/
			 * enable api short url api
			 * Tạo key
			 *
			 */
			if ($model->key)
			{
				$apiKey= $model->key;
			}
			else 
			{
				// key mặc định
				$apiKey = 'AIzaSyDtFbpsN53_PDdmLfUoJajDIhCHU-*****';
			}
			$model->output = ShorturlController::shorturl ( $model->input, $apiKey );
			return $this->render ( 'view', [ 'model' => $model ] );
		} else {
			// nhập dữ liệu vào
			return $this->render ( 'view', [ 'model' => $model ] );
		}
	}
	public function actionError()
	{
		$exception = Yii::$app->errorHandler->exception;
		echo $exception;die;
	}
	
	public function shorturl($longUrl, $apiKey) {
		// *** No need to modify any of the code line below. ***
		$postData = array ('longUrl' => $longUrl,'key' => $apiKey );
		$jsonData = json_encode ( $postData );
		$curlObj = curl_init ();
		curl_setopt ( $curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url?key=' . $apiKey );
		curl_setopt ( $curlObj, CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt ( $curlObj, CURLOPT_SSL_VERIFYPEER, 0 );
		curl_setopt ( $curlObj, CURLOPT_HEADER, 0 );
		curl_setopt ( $curlObj, CURLOPT_HTTPHEADER, array (
				'Content-type:application/json' 
		) );
		curl_setopt ( $curlObj, CURLOPT_POST, 1 );
		curl_setopt ( $curlObj, CURLOPT_POSTFIELDS, $jsonData );
		$response = curl_exec ( $curlObj );
		$json = json_decode ( $response );
		curl_close ( $curlObj );
		return $json->id;
	}
}

Tạo view mình tạo 1 view như sau :

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php 
 $form = ActiveForm::begin()
?>
 <?php 
 if ($model->output)
 	{
 	?>
 	<h3>Short url của link : <?= $model->input ?> là : <?= Html::a($model->output,$model->output,['target'=>'_blank'])?></h3>
 	
 	<?php 
 	}
 	?>
 
<?= $form->field($model, 'input')->textInput(['placeholder' => "Nhập link cần short url"])?>
<?= $form->field($model, 'key')->textInput(['placeholder' => "Nhập key của google console nếu không để trống"])?>
 <div class="form-group">
        <?= Html::submitButton('Shor link', ['class' => 'btn btn-primary'])?>
    </div>
 <?php 
 $form->end();
 ?>

Demo cho các bạn thực tập ở link https://demo.hbsprogram.com/shorturl

Nếu hay thì bạn chia sẻ bài viết .Mọi thắc mắc liên hệ qua skype : hien_cpa

Be the first to comment

Leave a Reply

Your email address will not be published.


*