勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて「hashids(Sqids)」ライブラリで数値からユニークなランダム英数字のIDに変換する方法

  PHP

PHPにてユーザID等を推測されないよう数値のIDからユニークなランダム英数字のIDに変換したかった。また、逆にランダム英数字のIDから数値のIDに再変換もしたかった。調べたところ「hashids(Sqids)」ライブラリで対応できる模様。以下に実装方法のメモ。

 

hashids(Sqids)

公式サイト

https://sqids.org/

ライブラリ名だけど元々は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でアクセスIPからランダム英数字のIDを作成

 

 - PHP

  関連記事

PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法

先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Hold ...

PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法

PHPでカレンダーを描写したいということがたまにある。今までバニラPHPで書いて ...

PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法

PHPで外部のAPI等にリクエストする際に可能であればfile_get_cont ...

PHPでルーティング用ライブラリ「AltoRouter」の利用方法

PHPフレームワークのCodeIgniterを勉強していた際にルーティング機能が ...

phpdotenvライブラリを使用してPHPで.envファイルを読み込ませる方法

CodeIgniterを勉強していた際に各種設定は「.env」というファイルに記 ...