Yii输入正确验证码却验证失败的解决方法

发布时间 - 2026-01-11 01:45:26    点击率:

前言

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

最后追踪代码发现,如果 Model 在 save 前,单独做了 validate 验证,则在验证结束后,会重新生成验证码

然后在我们 Model save 时,也会进行 validate 验证,验证时,验证码已经重新生成了,所以会匹配不上

// 如果这里用到了验证码,就会出问题

$model = new Test();

$model->validate();

$model->save();
// 这样是正确的

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

$model->save()

我们可以看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;
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# yii  # 验证码  # yii2  # 验证码不正确  # Yii2框架实现登陆添加验证码功能示例  # Yii2 如何在modules中添加验证码的方法  # Yii2下点击验证码的切换实例代码  # Yii2简单实现给表单添加验证码的方法  # Yii2增加验证码步骤详解  # yii2中添加验证码的实现方法  # Yii1.0 不同页面多个验证码的使用实现  # Yii 2.0自带的验证码使用经验分享  # Yii框架实现的验证码、登录及退出功能示例  # Yii使用Captcha验证码的方法  # yii实现创建验证码实例解析  # YII2框架中验证码的简单使用方法示例  # 就会  # 成了  # 也会  # 很容易  # 我们可以  # 不上  # 做一个  # 这篇文章  # 谢谢大家  # 则在  # 结束后  # 验证码错误  # 有疑问  # Test  # php  # model  # span  # code  # array 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用.env文件管理环境变量?(最佳实践)  Java垃圾回收器的方法和原理总结  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  制作企业网站建设方案,怎样建设一个公司网站?  手机软键盘弹出时影响布局的解决方法  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  LinuxCD持续部署教程_自动发布与回滚机制  JavaScript中的标签模板是什么_它如何扩展字符串功能  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何在IIS7上新建站点并设置安全权限?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何在云主机上快速搭建多站点网站?  ,交易猫的商品怎么发布到网站上去?  Laravel如何生成URL和重定向?(路由助手函数)  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  高端网站建设与定制开发一站式解决方案 中企动力  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何在IIS中新建站点并配置端口与IP地址?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  微信小程序 五星评分(包括半颗星评分)实例代码  如何在自有机房高效搭建专业网站?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  晋江文学城电脑版官网 晋江文学城网页版直接进入  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel如何处理CORS跨域请求?(配置示例)  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何配置Horizon来管理队列?(安装和使用)  Thinkphp 中 distinct 的用法解析  Laravel Session怎么存储_Laravel Session驱动配置详解  如何快速建站并高效导出源代码?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  如何在建站宝盒中设置产品搜索功能?