前言

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

最后追踪代码发现,如果 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 可以很容易就发现问题了

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;

}

}

总结

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

php验证码验证不成功,Yii输入正确验证码却验证失败的解决方法相关推荐

  1. php验证码一直验证错误,织梦输入正确验证码登录却一直显示错误的解决方法

    针对这种情况,我也在网上找了各种织梦(dedecms)后台登陆验证码错误或不显示解决的方法,常见的就是验证码输入明明正确但却提示不正确,或者压根不显示,该怎么办呢. 错误原因是升级后的漏洞所致 对织梦 ...

  2. Windows--远程桌面账号密码输入正确却显示凭据失败

    Windows–远程桌面账号密码输入正确却显示凭据失败的解决方法 Windows A电脑 通过自带的远程桌面连接 Windows B电脑 A电脑:客户端 B电脑:服务器 一般来说客户端不需要什么操作 ...

  3. QQ输入正确密码却验证错误的解决办法:)

    http://www.newsuzhou.cn/ 2007-5-4 8:20:48 <script type="text/javascript">put(appComm ...

  4. 关于django 1.10 CSRF验证失败的解决方法 - python

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 最近工作闲,没事自学django,感觉这个最烦的就是各版本提供的api函数经常有变化,不是取消了就是参数没有了,网上搜到 ...

  5. python token验证失败百分百解决_Token验证失败的解决方法

    Token验证失败的解决方法 一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定 ...

  6. 计算机开启后显示器黑屏,开机后显示器黑屏无信号输入但电脑主机一直在运行的解决方法...

    在使用电脑的过程中,难免会出现硬件或者系统.软件的故障,而近期有一个网友称自己的电脑出现了一个故障,那就是开机之后显示器黑屏无信号输入,但电脑主机一直在运行,其实出现了这个故障,原因众多,需要一一排查 ...

  7. 微信token验证失败的解决方法

    微信token验证失败的解决方法 参考文章: (1)微信token验证失败的解决方法 (2)https://www.cnblogs.com/kenshinobiy/p/5433705.html 备忘一 ...

  8. win10系统cmd模式下输入python弹出Windows应用商店 解决方法

    win10系统cmd模式下输入python弹出Windows应用商店 解决方法 解决方法1: 打开环境变量设置[此电脑->属性->高级系统设置->环境变量] 在变量Path中发现有% ...

  9. win10中谷歌浏览器输入任何字符导致浏览器崩溃的解决方法

    win10中谷歌浏览器输入任何字符导致浏览器崩溃的解决方法 最近在使用谷歌浏览器的时候,偶尔会用百度等查询资料,如果是点击标签页直接跳转不会出现任何问题,但是一旦有输入的时候,不管是在百度等搜索栏中输 ...

最新文章

  1. EJB-Java服务器端构件模型使用入门(2)
  2. 【机器学习】LR的分布式(并行化)实现
  3. python识别虚假新闻的分类器_使用NLP检测和对抗AI生成的假新闻
  4. 曾遭闪电贷攻击的Origin将重新推出稳定币OUSD
  5. 编写DAO,通过JdbcTemplate操作数据库的实践
  6. require.js 的简单运用 --兰
  7. 192.168.8.1手机登陆_192.168.1.1手机登陆
  8. Linux网络编程之connect创建
  9. 【WPF】Slider 任意位置拖动
  10. LabVIEW_百度百科
  11. 浅谈大数据如何应用?
  12. 评价模型的常用方法——精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?
  13. 英语对于软件开发者来说到底有多重要?
  14. java jar apktool,apktool.jar
  15. Codeforces 938E Max History [排列组合]
  16. 《德鲁克管理思想精要》读书笔记4 - 企业诊断工具与目标管理
  17. 基本面量化与美林时钟模型
  18. 天呐,经常用的sudo居然有漏洞?
  19. Java 获取手机号码归属地以及运营商
  20. 音响设备常用连接头及音视频线材的制作方法

热门文章

  1. Hybrid charging scheduling schemes for three-dimensional underwater wireless rechargeable sensor net
  2. 地质地下水类模型软件:InSAR、地面沉降、GMS、PHREEQC、TOUGH2、FEFLOW、Visual modflow、Hydrus...
  3. 安卓玩机搞机技巧综合资源-----“另类更新“偷渡”操作步骤 无需解锁bl 无需内侧用户【十三】
  4. 历年国二c语言真题百度网盘 下载,历年国家计算机二级C语言上机国二真题整理100套...
  5. Linux 脚本后台执行
  6. 查看话单日志和性能日志有效信息的流程
  7. 计算机右键管理无法访问指定设备,简单几步解决win10打开任务管理器显示无法访问指定设备方法...
  8. 数字电子技术基础(七):加法器
  9. 计算机组成与设计答案
  10. Java实现批量替换文本文档中内容