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を作成したい場合は以下過去記事参照。
関連記事
-
-
Dexie.jsを利用してIndexedDBを取り扱う方法
IndexedDBを用いて色々するという案件を見かけたが、そもそもIndexed ...
-
-
formで複数選択可能なセレクトメニュー(プルダウン)を実装する方法(select2)
フォームで複数選択可能なセレクトボックス(プルダウン)を実装したい。ただHTML ...
-
-
JavaScriptでtableタグをエクセルファイル(xlsx)としてダウンロードさせる方法
table内のデータを何らかのファイルでダウンロードさせたい。通常PHPでCSV ...
-
-
PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法
PHPで外部のAPI等にリクエストする際に可能であればfile_get_cont ...
-
-
バニラJS対応(jQuery非依存)の画像遅延読み込みプラグイン「echo.js」の利用方法
あるサイトをブラウザの開発者ツールで見ていると「echo.js」と聞いたことの無 ...