ホームページ >バックエンド開発 >PHPチュートリアル >PHP ランダム パスワード ジェネレーターが「a」と配列のみを生成するのはなぜですか?
問題:
コードを使用して PHP でランダムなパスワードを生成する場合以下のスニペットでは、すべての文字が「a」であり、戻り値は、 string.
function randomPassword() { $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789"; for ($i = 0; $i < 8; $i++) { $n = rand(0, count($alphabet)-1); $pass[$i] = $alphabet[$n]; } return $pass; }
解決策:
1.アルファベットの長さを計算するには、count の代わりに strlen を使用します。 count は文字列に対して常に 1 を返しますが、strlen は実際の長さを返します。
$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
2。 implode を使用して配列を文字列に変換します。 implode は配列を受け取り、その要素を単一の文字列に結合します。
return implode($pass); //turn the array into a string
3. $pass を配列として宣言します: これにより、文字列として初期化されなくなります。
$pass = array(); //remember to declare $pass as an array
セキュリティ警告:
rand() は暗号的に安全な擬似乱数生成器ではありません。パスワードの生成や暗号化の目的で、より安全な代替手段を使用することを検討してください。
以上がPHP ランダム パスワード ジェネレーターが「a」と配列のみを生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。