本帖最后由 chenxue4076 于 2014-10-20 10:53 编辑
原文地址:http://blog.windigniter.com/2014/10/codeigniter-captcha/ 1.当然是显示不出验证码的问题, 如果按照文档类似这种代码 $vals = array( 'img_path' => '/uploads/captcha/', 'img_url' => base_url('uploads/captcha').'/', 'img_width' => 100, 'img_height' => 40, 'expiration' => 300);$cap = create_captcha($vals);发现无法获取cap的值,或者说返回的值是false, 可能原因是 - 确保img_path,img_url不为空
- 确保img_path是个正确路径,这里填写相对路径可能会返回空
- img_path必须可写,windows服务器不存在这个问题
- GD库没有启用
个人这里出现问题是因为img_path写的相对路径,改成绝对路径就返回正确的值了。
代码如下 $vals = array( 'img_path' => dirname(BASEPATH).'/uploads/captcha/', 'img_url' => base_url('uploads/captcha').'/', 'img_width' => 100, 'img_height' => 40, 'expiration' => 300);$cap = create_captcha($vals);如果有值但是不显示看是不是img_url少了“/”。 2.captcha存入数据库,我看官方文档里面说使用数据库存储,在获取的时候,使用字符串和IP再加过期判断,个人觉得这里很有问题, 首页用户主动刷新验证码的时候,数据库里面的旧验证码是肯定没有过期的,这个时候如果用户不是输入新的,仍然输入旧的这里仍能够验证通过,当然如果你说用户如果能识别出旧的就不刷新了,我这个顾虑是多余的,也是有道理。我这里只是提出问题。 3.如果不想存入数据库,可以选择存入session或者cookie,这样反而简单很多,你根本不用去写入,查询和删除那些记录。只要将 里面word的值记录下来就行了。 4.如果闲验证码里面的字符个数过多,1.直接修改这个helper辅助文件,或者重写下,保存成MY_captcha_helper.php 也是可以的。
|