Symfoware

Symfowareについての考察blog

PHP URLパラメーターに使える適当なハッシュ値を生成する

URLパラメーター1つに複数の情報を詰め込む。
暗号化までは行かなくてよいが、簡単に推測できないようなハッシュ値が作りたい。

Fuelphpでの例ですが、こんなイメージ。
1つのパラメーターにユーザーIDとリダイレクト先のURLを入れたい。


  1. <?php
  2. class Controller_Test extends Controller
  3. {
  4.     public function action_index()
  5.     {
  6.         echo Uri::create('test/redirect/[何かしらのパラメーター]');
  7.     }
  8.     public function action_redirect($parameter) {
  9.         // パラメーターを解析
  10.         $data = some_function($parameter);
  11.         // アクセスログを記録
  12.         Log::write($data['user'] . 'access!');
  13.         // リダイレクト実行
  14.         Response::redirect($data['url']);
  15.     }
  16. }




gzcompressとbase64_encode



文字列を圧縮してbase64にすればいいのでは。

gzcompress
base64_encode


  1. <?php
  2. class Controller_Test extends Controller
  3. {
  4.     public function action_index()
  5.     {
  6.         $data = json_encode(['user' => 'symfoware', 'url' => 'https://www.google.com/']);
  7.         // 圧縮してbase64
  8.         $parameter = base64_encode(gzcompress($data));
  9.         echo Uri::create('test/redirect/'.$parameter);
  10.     }
  11.     public function action_redirect($parameter) {
  12.         // パラメーターを解析
  13.         $json = gzuncompress(base64_decode($parameter));
  14.         $data = json_decode($json, true);
  15.         // アクセスログを記録
  16.         Log::error($data['user'] . ' access!');
  17.         // リダイレクト実行
  18.         Response::redirect($data['url']);
  19.     }
  20. }



こんなURLが生成されました。

915_01.png

表示されたURLに遷移すると、狙い通りアクセスログの記録とリダイレクトが実行されました。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/08/01(水) 22:18:05|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<プログラミング言語「nim」を Ubuntu Server 18.04にインストールし、hello world | ホーム | FuelPHP CacheドライバにRedisを使用する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2234-d2fdc38b
この記事にトラックバックする(FC2ブログユーザー)