原文链接:https://www.jianshu.com/p/7455f270ebcb

首先解决刷新页面不刷新验证码问题

通过分析源码,我们只需修改\yii\captcha\CaptchaAction的 run() 方法中调用为 getVerifyCode(true) 便可解决问题,但是又不能修改源码,这时可以采取继承并重载的方法来实现了。

新建backend/components/CaptchaAction.php

setHttpHeaders();

\Yii::$app->response->format = Response::FORMAT_RAW;

return $this->renderImage($this->getVerifyCode(true));

}

}

在 SiteController 控制器中注册 CaptchaAction 方法:

public function actions()

{

return [

//默认验证码刷新页面不会自动刷新

'captcha' => [

'class' => 'backend\components\CaptchaAction',

'testLimit' => 1,

'maxLength' => 6,

'minLength' => 6,

'padding' => 1,

'height' => 50,

'width' => 140,

'offset' => 1,

],

];

}

然后解决点击验证码刷问题

只需要给验证码图片标签 添加 'onclick' => 'this.src=this.src+"&c="+Math.random();'即可,其实其他框架中也一样。

= yii\captcha\Captcha::widget([

'name'=>'captchaimg',

'captchaAction'=>'site/captcha',

'imageOptions'=>[

'id'=>'captchaimg',

'title'=>'换一个',

'alt'=>'换一个',

'style'=>'cursor:pointer;',

// 添加点击事件

'onclick' => 'this.src=this.src+"&c="+Math.random();'

],

'template'=>'{image}'

]);?>

怎么验证提交的验证码是否正确呢?在这个例子中,登录表单提交到 'site/login',处理如下:

/*简单示例*/

public function actionLogin(){

$post = Yii::$app->resquest->post();

if (!$this->createAction('captcha')->validate($post['CAPTCHA'], false)) {

//验证码错误的提示

}

}

php验证码切换不刷新页面,Yii2解决验证码点击、刷新页面不刷新问题相关推荐

  1. 解决苹果手机点击输入框页面自动放大问题

    一开始我的meta标签是这样的 <meta name="viewport" content="width=device-width, initial-scale=1 ...

  2. 【Vue】问题:解决苹果手机点击输入框页面自动放大问题

    问题描述 在index.html文件中meta标签配置如下 <meta name="viewport" content="width=device-width, i ...

  3. IDEA打开Maven项目一直indexing或 scanning files to index导致整个idea页面卡住 解决方法

    IDEA打开Maven项目一直indexing或 scanning files to index导致整个idea页面卡住 解决方法 点击 file ->invalidate Cache/rest ...

  4. 刷新计算机无法显示,显示器无法调整刷新频率的解决办法

    显示器无法调整刷新频率的解决办法 在"显示属性"中显示器刷新频率无法调整,其实无法调整显示器刷新频率大多是因为人们没有选择正确的显示器类型或者显卡的驱动程序安装不正确所造成的.显示 ...

  5. php 让百度蜘蛛抓取403,百度蜘蛛不抓取页面的解决方法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我们都知道我们网站的页面要想被百度收录必须经过百度蜘蛛的抓取,因此我们要经常关注我们网站页面被抓取的情况,如果遇到不被抓取的情况,那么就要引起我们的注意, ...

  6. php每分钟刷新一次的验证码,php如何在进入页面的时候自动刷新一次验证码

    页面直接进入login页面的时候无法获取到$_SESSION["auth"]值,只能刷新一次验证码才能获取到值,怎么才能在用户访问的时候自动刷新一次验证码,求大神支招... 验证码 ...

  7. 解决:vue项目的页面刷新之 title被重置问题

    如何解决:vue项目的页面刷新之 title被重置问题? 需求场景描述:(以title名为"个人中心"页面为例) 用户初次访问进入"个人中心"页,浏览器显示的页 ...

  8. 解决苹果手机点击返回键页面不刷新问题

    解决苹果手机点击返回键页面不刷新问题 参考文章: (1)解决苹果手机点击返回键页面不刷新问题 (2)https://www.cnblogs.com/-mrl/p/7150417.html (3)htt ...

  9. 如何解决前端上线之后用户页面不刷新的问题

    前言 最近使用 Vue3 技术把公司的一个大的 Web 前端项目进行了一个升级.升级过程坎坷不断,但最终是成功了,具体升级相关的另开篇讲,这里主要讲下使用 Vite 作为打包工具之后,每次打包上线完, ...

最新文章

  1. [ObjectiveC]NSDATA, NSDICTIONARY, NSSTRING互转
  2. 基建狂魔:硬核技术之隔绝厌氧菌的涂料
  3. java 正则 任意字符_Java正则表达式 去掉括号内任意字符
  4. 重构-改善既有代码的设计:编写代码22宗罪(三)
  5. java面试题五 十六进制
  6. 如何在Swift中使用CoreData设置有用的自动完成UITextField
  7. 宝宝树发行价为6.8港元 11月27日在港交所正式挂牌
  8. 踏踏实实学javascript--javascript中的变量
  9. jQuery-ui-autocomplete
  10. Linux 开发环境 -- glibc 升级(不建议轻易升级)
  11. Python学习(七)if语句
  12. iOS 用内置浏览器Safari 打开网页
  13. 二分答案——洛谷P2440木材加工
  14. uniapp 开发微信小程序图像识别
  15. 输入一个字符串,判断其是否为回文串。
  16. JMeter-16-循环控制器
  17. log-anomaly-detector (LAD)
  18. 五年程序员工作小结技巧
  19. Oracle客户端工具介绍
  20. 稳了,我用 Python 可视化分析和预测了 2022 年 FIFA 世界杯

热门文章

  1. [note]浏览器兼容性(embed标签、字体兼容相关
  2. Amarino例程无法使用的问题
  3. 通过实验取证:TCP三次握手的过程
  4. 改变循环执行的状态,循环程序举例
  5. 不是碰不到更好的,是因为已经有了你!
  6. Android事件传递(分发)机制
  7. 【优达学城测评】求T-test值,P-value值
  8. AngularJS+RequireJs实现动态加载JS和页面的方案研究【上】
  9. 权限框架 - shiro 简单入门实例
  10. 如何在maven环境中设置JVM参数