闲来无事于是研究一下thinkPHP ,在写一个注册页面在验证码的环节卡住,症状如下:
前台输入验证码,获取input改变事件,以验证验证码是否输入正确,做出提示,然后提交,在后台处理的时候再次统一验证,出错则注册失败,返回,结果前台提示正常,可是一提交则一直提示验证码输入错误,dump一下session发现session被清空,可是前台测试一切正常,session也正常,可是就是在这里给无端清空了,于是就犯郁闷了,偶一次发现验证码输入正确后,再继续输入,session被清空,至此恍然大悟,进入源码,发现如下片段:
if($this->authcode(strtoupper($code)) == $secode['verify_code']) {
$this->reset && session($key, null);
return true;
}
原来check方法会在验证码正确后将session清空,而我前台验证的方法调用了它 所以在我验证成功后是无法再次验证的,于是在源码中添加新的函数 专门用于前台验证,二这个不能清空session,而且最好在后台处理的时候判断验证码还是用上面的代码,验证完后清理session。