勉強したことのメモ

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

  関連記事

Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法

先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...

PHPでExcelシートを出力する方法(PhpSpreadsheet)

PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...

PHPで「ramsey/uuid」ライブラリを用いてUUIDを生成する方法

PHPでUUID(Universally Unique Identifier)を ...

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

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

HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)

HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...