ThinkPHP3.2.3版本验证码异步第二次验证时失败的问题解决

      最近在用TP3.2.3做一个小项目,纠结于验证码验证问题,重点在于二次验证,举个例子就是常见的登录页面上有个验证码输入框,当用户输入验证码并且鼠标点击在这个输入框之外时候,触发onblur事件,然后ajax到后台方法进行一次验证,并且将验证结果反馈给用户(alert什么的),正确之后提交表单到控制器方法中,又进行一次验证,而问题恰恰出现在这里,就是首次ajax验证的时候没有问题,但到了第二次验证的时候,无论如何无法成功。

      拜读了版块内各位大神给出的建议,发现thinkPHP的验证方法会在第一次验证成功(验证码输入正确)后,自动销毁SESSION中的验证码信息(这点我好像没有在官方手册中看到),这样的话,在提交表单后,session中已经没有验证码的信息了,所以第二次验证的代码你怎么改它不会成功。因此,如果需要二次验证,则需要在前一次验证的方法中传入array('reset'=>false)参数(因为Verify这个类中有这个属性,默认值是true),这样处理以后,验证码在SESSION中的信息不会被销毁,以便于二次验证。下面是示例代码:
ajax验证,用在输入框触发onblur时

 

posted @ 2017-03-26 11:24  阿木工作室  阅读(1257)  评论(0编辑  收藏  举报