我有这个验证码脚本,应该生成4个字符的长度。它确实如此 - 大多数时候。虽然有时它会产生3个字母而不是4个字母。我根本找不到错误。
这是生成长度的脚本:
$_chars = "0123456789ZXCVBNMASDFGHJKLQWERTYUIOP";
for($l = 0; $l<4; $l++){
$temp = str_shuffle($_chars);
$char = mt_rand(0, strlen($temp));
$_charcode .= $temp[$char];
}
答案 0 :(得分:3)
随机函数的max
参数(秒)应该比字符串的长度小1,因为索引从0开始,并且您在代码中稍后将该索引用于数组。
$char = mt_rand(0, strlen($temp)); // Goes out of bounds on some runs
应该是
$char = mt_rand(0, strlen($temp)-1); // This way you wont get a blank one
这是500次奔跑的小提琴。