PHP ランダム文字列ジェネレーター 質問する

PHP ランダム文字列ジェネレーター 質問する

PHP でランダムな文字列を作成しようとしていますが、次のようにしてもまったく出力されません。

<?php
    function RandomString()
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randstring = '';
        for ($i = 0; $i < 10; $i++) {
            $randstring = $characters[rand(0, strlen($characters))];
        }
        return $randstring;
    }

    RandomString();
    echo $randstring;

何が間違っているのでしょうか?

ベストアンサー1

この質問に具体的に答えると、2 つの問題があります。

  1. $randstringエコーするとスコープ内に含まれなくなります。
  2. ループ内で文字が連結されません。

修正を加えたコード スニペットを次に示します。

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[random_int(0, $charactersLength - 1)];
    }
    return $randomString;
}

以下の呼び出しでランダムな文字列を出力します。

// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();

この回答の以前のバージョンrand()では の代わりにが使用されていたためrandom_int()、予測可能なランダムな文字列が生成されていました。そのため、次のアドバイスに従って、より安全なものに変更されました。この答え

おすすめ記事