thinkPHP验证码失效的问题

本文详细探讨了在使用thinkPHP框架进行网站开发时遇到的一个关于验证码处理的问题。具体表现为前端验证通过后,后端却始终报错验证码不正确,并且会清除session。经过深入研究源代码,发现问题在于验证码校验成功后会自动清除session,导致二次验证失败。为解决此问题,作者修改了源代码,增加了新的验证函数,并保留了session。

         闲来无事于是研究一下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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值