用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1556|回复: 3
收起左侧

[版本 2.x] 使辅助函数captcha,未提供word参数,是空字符,不是随机why?

[复制链接]
发表于 2016-12-3 14:57:51 | 显示全部楼层 |阅读模式
$vals = array(
                        //'word'=>'random',
                        'img_path' =>'./data/captcha/' ,
                        'img_url'=>base_url().'data/captcha/', );
                $data=create_captcha($vals);
                var_dump($data);如果不提供word制定参数,生成的不是随机字符,是个空字符。反之没有问题,跟文档描述有差距。


captcha.png
captcha2.png
发表于 2016-12-3 21:41:01 | 显示全部楼层
你的 CI 版本是?
 楼主| 发表于 2016-12-5 16:48:44 | 显示全部楼层
本帖最后由 nenuwangd· 于 2016-12-5 16:51 编辑
Hex 发表于 2016-12-3 21:41
你的 CI 版本是?

上次谢谢你帮我回答问题。我用的ci版本是2.2.6。if (empty($word))
                {
                        $word = '';
                        $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                        $pool_length = strlen($pool);
                        $rand_max = $pool_length - 1;

                        // PHP7 or a suitable polyfill
                        if (function_exists('random_int'))
                        {
                                try
                                {
                                        for ($i = 0; $i < $word_length; $i++)
                                        {
                                                $word .= $pool[random_int(0, $rand_max)];
                                        }
                                }
                                catch (Exception $e)
                                {
                                        // This means fallback to the next possible
                                        // alternative to random_int()
                                        $word = '';
                                }
                        }
                }

我看了下captcha_helper.php文件,里面没有定义$word_length,如果我直接给$word_length赋值,就会出错
发表于 2016-12-6 14:03:40 | 显示全部楼层
看了一下,确实是 2.2 代码的一个 BUG,3.1.2 已经没有这个 BUG 了。

本版积分规则