質問: ### 前提・実現したいこと ランダムな文字数列の生成(ケタ数を指定して) ### 発生している問題・エラーメッセージ ランダムな文字数列の生成にはuniqid()関数があるが、uniqid()では13桁という制限がある。 ### 該当のソースコード ``` ``` 結果:[例] 48f7146e6ea07というランダムな文字数列が生成される。 ### 試したこと いろいろ調べた。 ### 補足情報(言語/FW/ツール等のバージョンなど) unique()では13桁という制限があると解釈しているのですが uniqueはケタ数指定はできるのでしょうか?? できなければできる関数を教えてくれると嬉しいです。 よろしくお願いします。
回答: PHPについて調べるときは、PHPのマニュアルを最初に調べるといいです。PHPに関することならたいてい、これに書いてあります。 * uniqid 「マイクロ秒単位の現在時刻にもとづいた、接頭辞つきの一意な ID を取得します。」と説明されている通り、桁数を変えられませんし、ランダムでもないです。 * rand 整数の疑似乱数を返しますが、最大値と最小値を指定できるので、桁数を変えられます。 上記2つの説明では「この関数が生成する値は、暗号学的に安全ではありません。」と警告しています。つまり、**十分にランダムな結果を返さない**ということです。より安全な (よりランダムな結果を返す) 関数についても、マニュアルに説明があります。