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次)时,我会得到上面指定的消息?有时候这个告示会超过两行?
那么,为什么在重复运行时会随机生成错误消息呢?什么时候指定的参数没有变化?
发布于 2013-04-04 03:08:45
考虑到这一行:
strlen($characters)如果字符串长度为16,并在0和16之间进行随机数字选择,则给它在最后一个之后选择索引的选项,这是没有意义的。你得赶过去
strlen($characters) - 1因为指数实际上从0开始;
https://stackoverflow.com/questions/15801836
复制相似问题