yii输入正确验证码提示错误

yii输入正确验证码提示错误

在做一个需求时,发现输入正确验证码,但是都提示验证码错误。

最后追踪代码发现,如果 Model 在 save 前,单独做了 validate 验证,则在验证结束后,会重新生成验证码。然后在我们 Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,所以会匹配不上。

问题发现:

我们可以看framework/web/widgets/captcha/CCaptchaAction.php可以很容易就发现问题了。

<?php class CaptchaAction extends CCaptchaAction{     public function validate($input, $caseSensitive)     {         $code = $this->getVerifyCode();         $valid = $caseSensitive ? ($input === $code) : !strcasecmp($input, $code);         $session = Yii::app()-&gt;session;         $session-&gt;open();         $name = $this-&gt;getSessionKey() . 'count';                 if (!Yii::app()-&gt;request-&gt;isAjaxRequest) {             $session[$name] = $session[$name] + 1;         }                 // 这里会重新生成         if ($session[$name] &gt; $this-&gt;testLimit &amp;&amp; $this-&gt;testLimit &gt; 0) {                     $this-&gt;getVerifyCode(true);         }                 return $valid;     } }
// 如果这里用到了验证码,就会出问题$model = new Test();  $model-&gt;validate();  $model-&gt;save();
// 这样是正确的$model = new  Test(); // 把需要验证的 Attribute 放进去,排除验证码字段 $model-&gt;validate(array('test1','test2')); $model-&gt;save()

相关文章教程推荐:yii教程

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享