0
protected static function generateString ($length = 50, $Password){
        $characters = $Password;
        $string = '';

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[mt_rand(0, strlen($characters))]; // Error Line
        }
        echo $string;
    }

你好。我正在构建一个身份验证类,上面的函数让我有些悲伤,我不断收到错误消息:

注意:未初始化的字符串偏移量:16

回声用于测试目的。

我正在使用以下方法调用我的函数:

 public static function Compile($Password, $Length){
        self::generateString($Length,$Password);
    }

Auth::Compile('testi ngpassword', 10);

当我运行我的脚本时,有时它会生成没有错误消息;但是当多次运行(3-7)时,我会收到上面指定的消息?有时这个通知显示超过两行?

那么为什么重复运行时会随机生成错误消息?当指定的参数没有改变时?

4

1 回答 1

2

考虑这一行:

strlen($characters)

如果字符串长度为 16,并且您在 0 和 16 之间进行随机数选择,则您可以选择在 last 之后选择索引,这没什么。你需要做到

strlen($characters) - 1

由于索引实际上从 0 开始;

于 2013-04-04T03:08:45.610 回答