PHP - Captcha生成错误的字符长度

时间:2013-10-04 06:20:03

标签: php

我有这个验证码脚本,应该生成4个字符的长度。它确实如此 - 大多数时候。虽然有时它会产生3个字母而不是4个字母。我根本找不到错误。

这是生成长度的脚本:

  $_chars = "0123456789ZXCVBNMASDFGHJKLQWERTYUIOP";

    for($l = 0; $l<4; $l++){


        $temp = str_shuffle($_chars);


        $char = mt_rand(0, strlen($temp));


        $_charcode .= $temp[$char];


    }

1 个答案:

答案 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次奔跑的小提琴。

Fiddle