PHPにてユニークかつランダム英数字の文字列を作成する方法
2024/04/16
PHPでユニークな文字列を作成したかった。MySQLとかのオートインクリメントの値ではなく、推定されにくいランダムな英数字が良かった。あと、出来るだけどのような状況でも共通して使いたいので、モジュールとか別途インストールはせず標準の関数とかだけで対応したかった。以下に対応方法をメモ。
uniqid関数を使う場合
echo md5(uniqid(rand(), true)); //196b4afca8e923b2ac60a9d575098eab
UUID v4を作成したい場合
function gen_uuid() { $uuid = array( 'time_low' => 0, 'time_mid' => 0, 'time_hi' => 0, 'clock_seq_hi' => 0, 'clock_seq_low' => 0, 'node' => array() ); $uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16); $uuid['time_mid'] = mt_rand(0, 0xffff); $uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000)); $uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128)); $uuid['clock_seq_low'] = mt_rand(0, 255); for ($i = 0; $i < 6; $i++) { $uuid['node'][$i] = mt_rand(0, 255); } $uuid = sprintf( '%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x', $uuid['time_low'], $uuid['time_mid'], $uuid['time_hi'], $uuid['clock_seq_hi'], $uuid['clock_seq_low'], $uuid['node'][0], $uuid['node'][1], $uuid['node'][2], $uuid['node'][3], $uuid['node'][4], $uuid['node'][5] ); return $uuid; }
関連記事
-
-
PHPでソーシャル(SNS)ログインする方法2018
久しぶりにソーシャル(SNS)ログインを実装する機会があった。以前に対応方法を書 ...
-
-
PHPでテンプレートPDFに動的に文字や数値を追記し出力する方法(TCPDF&FPDI)
請求書や領収書のテンプレートがあり、そちらに対して動的に文字・数値を追記し出力さ ...
-
-
PHPでサイトURLからtitleとRSS用URLを取得
サイトのURLからRSS用URLとサイトタイトルを自動で取得したかった。その方法 ...
-
-
$_SERVER['PHP_SELF']に脆弱性あり
formのaction属性とかページングのリンクとかで、 <form ac ...
-
-
PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について
他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ...