1. ホーム
  2. php

[解決済み】phpでランダムなパスワードを生成する

2022-04-09 09:53:56

質問

私は、phpでランダムなパスワードを生成しようとしています。

しかし、私はすべての'aを取得し、私はそれを文字列にしたいのですが、戻り値の型は配列です。このコードを修正する方法について、何かアイデアはありますか?

ありがとうございます。

function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}

解決方法は?

<ブロッククオート

セキュリティ警告 : rand() は暗号学的に安全な疑似乱数生成器ではありません。他の場所で PHP で暗号化された安全な疑似乱数文字列を生成する .

これを試してみてください(使用 strlen の代わりに count というのも count を文字列の上に置くと、常に 1 ):

function randomPassword() {
    $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    $pass = array(); //remember to declare $pass as an array
    $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, $alphaLength);
        $pass[] = $alphabet[$n];
    }
    return implode($pass); //turn the array into a string
}

デモ