Jika anda ingin mengenkripsi parameter url seperti ini:
https://frontend.bardimin/country/view?id=1
menjadi seperti ini:
https://frontend.bardimin/country/view?MN13pDvH/4+94LNY/NXJiDM4YTMwZjc5ZjRmMzA0Y2RjMDRmMjUyYmI5M2Q4MmE2ZDE4ODNkOTdkNzc1MGI3Yzg5OTE4NzVlMzBlMjZmNzkXVSsTf7d1y5a26LK8IcsggrWQi+hW4b0xIFKnIZowSTXZVxu+t2lGyx/skNKFo6g=
Anda dapat melakukannya dengan mudah di yii2. Berikut langkah-langkah untuk melakukan encript/decript pada parameter URL seperti contoh di atas:
1. Membuat class UrlRule
Langkah pertama yang harus Anda lakukan adalah membuat file UrlRule.php pada direktori “common/helpers” jika menggunakan yii2 advanced atau direktori “helpers” jika menggunakan yii2 basic. Kemudian copy/paste kode berikut ini:
<?php namespace common\helpers; use yii; class UrlRule implements yii\web\UrlRuleInterface { public $jklKey = '-YD07LTTJdSVB6oThcC7l60KeZTUXcNA'; //change if necessary public function createUrl($manager, $route, $params) { if ($params!==null) { $paramString = serialize($params); $paramStringEncoded = $paramString ? base64_encode(Yii::$app->security->encryptByKey($paramString,$this->jklKey,null)) : ''; } return empty($params) ? $route : $route . '?' . $paramStringEncoded; } public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $queryString=$request->getQueryString(); if(!empty($queryString)) { $params=unserialize(Yii::$app->security->decryptByKey(base64_decode($queryString),$this->jklKey,null)); foreach ($params as $key => $value) { $paramsQuery[$key] = $value; } return [$pathInfo,$paramsQuery]; } return false; } }
Artikel Menarik Lainnya
2. Ubah file config/main.php
Selanjutnya ubah file config/main.php anda seperti ini:
............. ............. 'components' => [ ............. ............. ............. 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'enableStrictParsing' => false, 'rules' => [ ['class' => 'common\helpers\UrlRule'], ], ], ............. ............. ] ............. .............