CI验证码的故障:Session相关
首先是产生验证码与验证码校验的函数:function captcha(){
$this->load->library('CaptchaImage');
ob_start();
$this->session->set_flashdata('captcha', $this->captchaimage->getString());
$this->captchaimage->setFont('./system/fonts/type-ra.ttf',16);
$this->captchaimage->draw();
ob_flush();
}
function code_check($str){
if($str==$this->session->flashdata("captcha")){
return TRUE;
}else{
$this->validation->set_message('code_check', '%s不正确');
return FALSE;
}
}
设置验证规则的部分代码就不贴了,跟讨论问题没有影响。
故障:我在登陆的时候一直出现‘验证码错误’的提示,确认输入的验证码没有问题。该问题之前并未出现!
环境:linux + php5.2 + mysql +gd session保存在数据库的表中。
资料:
以下是我在数据库中截取的图片,可以看到有两个会话。
请问各位大牛,不知道是哪里出问题了?
我今天下午的时候还用得好好的,突然出现该问题,并未改动源码。
我清空了session数据库表的内容,但是还是 不行。 诡异了!
我考虑到本地的Cookies的问题,所以换了不同的浏览器测试,搜狗双核的高速核心也就是webkit核心和IE核心没有区别,IE8一样的问题,换了chrome,没问题了!
看来这个问题不是程序的问题,是session处理程序在判断远程cookie中保存的sessionid的问题上还有些缺陷。 用hex的session试试 回复 3# redlink
多谢指点,问题已经解决!
大家如果遇到类似的问题,可以直接复制HEX老大的session类库到aaplication\libarys下就可以,不需要修改源码,即可彻底解决类似问题。 验证码图像我用MVC 构架怎么也搞不起。后来在根目录地下放了个专门画验证码的文件才搞定。稳定性还很不错。
页:
[1]