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)时,我会看到上面指定的消息?有时这个通知显示超过两行?
那么为什么在重复运行时会随机生成错误消息?当指定的参数没有改变时?
答案 0 :(得分:2)
考虑这一行:
strlen($characters)
如果字符串长度为16并且您在0到16之间选择一个随机数,那么您可以选择在最后一个之后选择索引,这是什么都没有。你需要做到这一点
strlen($characters) - 1
因为索引实际上从0开始;