最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-03 18:21:23
文档

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

yii输入正确验证码提示错误:在做一个需求时,发现输入正确验证码,但是都提示验证码错误。最后追踪代码发现,如果 Model 在 save 前,单独做了 validate 验证,则在验证结束后,会重新生成验证码。然后在我们 Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,
推荐度:
导读yii输入正确验证码提示错误:在做一个需求时,发现输入正确验证码,但是都提示验证码错误。最后追踪代码发现,如果 Model 在 save 前,单独做了 validate 验证,则在验证结束后,会重新生成验证码。然后在我们 Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,


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

最后追踪代码发现,如果 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()->session;
 $session->open();
 $name = $this->getSessionKey() . 'count'; 
 if (!Yii::app()->request->isAjaxRequest) {
 $session[$name] = $session[$name] + 1;
 } 
 // 这里会重新生成
 if ($session[$name] > $this->testLimit && $this->testLimit > 0) {
 $this->getVerifyCode(true);
 }
 return $valid;
 }
}
// 如果这里用到了验证码,就会出问题$model = new Test();

$model->validate();

$model->save();
// 这样是正确的$model = new Test();
// 把需要验证的 attribute 放进去,排除验证码字段
$model->validate(array('test1','test2'));
$model->save()

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

文档

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

yii输入正确验证码提示错误:在做一个需求时,发现输入正确验证码,但是都提示验证码错误。最后追踪代码发现,如果 Model 在 save 前,单独做了 validate 验证,则在验证结束后,会重新生成验证码。然后在我们 Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,
推荐度:
标签: 正确 提示 验证码
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top