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にて「php-ulid」ライブラリを用いてULIDを生成する方法
先日MySQLにてUUIDを発行するメモを書いたがUUID v1だと生成時間によ ...
-
PHP Qr Codeライブラリを使用してQRコードを生成する方法
PHPでQRコードを生成したい。大分前にGoogle Chart APIを用いて ...
-
PHPで「ramsey/uuid」ライブラリを用いてUUIDを生成する方法
PHPでUUID(Universally Unique Identifier)を ...
-
PHPのバリエーションライブラリ「Valitron」の導入及び利用方法
フォーム等の入力内容チェックをPHP側で行う際、現状は素のPHPで書いているけど ...
-
PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...