ホームページ > バックエンド開発 > PHPチュートリアル > PHP ランダム パスワード ジェネレーターが「a」と配列のみを生成するのはなぜですか?

PHP ランダム パスワード ジェネレーターが「a」と配列のみを生成するのはなぜですか?

Linda Hamilton
リリース: 2024-11-26 13:59:12
オリジナル
1033 人が閲覧しました

Why Does My PHP Random Password Generator Only Produce

PHP でのパスワードのランダムな文字列の生成

問題:

コードを使用して 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート