PHPにて「hashids(Sqids)」ライブラリで数値からユニークなランダム英数字のIDに変換する方法
PHPにてユーザID等を推測されないよう数値のIDからユニークなランダム英数字のIDに変換したかった。また、逆にランダム英数字のIDから数値のIDに再変換もしたかった。調べたところ「hashids(Sqids)」ライブラリで対応できる模様。以下に実装方法のメモ。
hashids(Sqids)
公式サイト
ライブラリ名だけど元々はhashidsで後からSqidsになったみたい。
GitHub
https://github.com/vinkla/hashids
インストール
サーバにSSH接続し以下コマンドでインストールする。
composer require hashids/hashids
利用方法
ソースコード
<?php require_once 'vendor/autoload.php'; use Hashids\Hashids; //ハッシュ化させるID $id = 5; //ハッシュの長さ $length = 10; $hash_class = new Hashids('', $length); $encode_id = $hash_class->encode($id); var_dump($encode_id); //string(10) "4openRe7Az" $decode_id = $hash_class->decode($encode_id); var_dump($decode_id); //array(1) { [0]=> int(5) }
ハッシュの長さについて
new Hashids()の第二引数でハッシュの長さを指定できるが、正確にその長さになるというわけではなく、指定した長さに収まる設定とのこと。
復号化について
復号化すると配列で返ってくる点に注意する。
その他
アクセスIPからランダム英数字のIDを作成したい場合は以下過去記事参照。
関連記事
-
-
PHPでvar_dumpをツールバー形式で表示するライブラリ「Kint」の使い方
PHPでvar_dumpを見やすくするためにdBugライブラリを利用しているが、 ...
-
-
PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法
ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及 ...
-
-
PHPにて「php-ulid」ライブラリを用いてULIDを生成する方法
先日MySQLにてUUIDを発行するメモを書いたがUUID v1だと生成時間によ ...
-
-
PHPでExcelシートを出力する方法(PhpSpreadsheet)
PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...
-
-
PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...