【PHP】ランダムにIDやパスワードを生成する方法

こんにちは!CODE CLUB965のKです!

今回は、PHPでパスワードやIDを生成したいときに、ランダムに文字列を生成する方法について書こうと思います。

色々と関数はありますが、今回は以下の2つの関数について紹介します。

str_shuffle関数
・ uniqid関数

主にパスワードやIDを生成するときに使える関数です。
ひとつずつ見ていきましょう!

str_shuffle関数

str_shuffle関数は、引数に指定した文字列をシャッフルすることができます。

例えば何かパスワードを生成したい場合などに、下記のように書くこともできます。

$pwd = str_shuffle('ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz0123456789');

// 先頭6桁をランダムなパスワードとして生成する
$str = substr(str_shuffle($pwd), 0, 6);

上記では、str_shuffle関数の引数に指定された文字列を指定するとその中でシャッフルされます。
その後で、substr関数を使ってstr_shuffle関数でシャッフルした文字列の先頭から6桁を取得してパスワードを生成する方法です。

パスワードやIDを生成したいときに使えそうですね。

uniqid関数

uniqid関数もランダムな文字列を生成することができ、ユニーク(唯一の値)なIDを生成するときに使用します。

第一引数にrand関数を指定すると、さらにランダムな文字列を生成することができます。

uniqid(); // 7wa1d0f3rt592

引数を指定しなければユニークなIDを生成します。

第一引数に接頭辞(プレフィックス)を付けることもできます。

uniqid('code-'); // code-7wa1d0f3rt592

第二引数には、生成される文字数を増やすかどうかをtrue/falseで指定できます。
デフォルトでは、false状態で、生成される文字数は13文字です。
trueの場合、13桁の文字列にプラスしてドット( . )と9桁の数字が追加されます。

uniqid("", true); // 72staw45f8fd1.680137592

最初にも言いましたが、rand関数を使えばさらにランダムな文字列を生成できます。
mt_rand関数でも問題ありません。
むしろ、mt_rand関数の方が高速なのでいいと思います。

uniqid(rand());
uniqid(mt_rand()); 

ユニークなIDを生成するときに使ってみて下さい。

それでは、また!

Follow me!