当前位置: 首页 > 后端技术 > PHP

使用Yii2验证码,不改源码实现验证码刷新

时间:2023-03-29 20:19:28 PHP

说明Yii2框架的官方文档涉及验证码使用的篇幅非常少。不过验证码在开发中其实用的比较多。下面是解决验证码无法刷新问题的方案,参考资料。步骤1。定义验证码action和error一样。验证码需要定义在actions方法中。通常,为了方便,可以直接在SiteController中定义。以SiteController为例['class'=>'yii\captcha\CaptchaAction','fixedVerifyCode'=>YII_ENV_TEST?'testme':null,'backColor'=>0x000000,//背景颜色'maxLength'=>5,//最大显示数'm??inLength'=>4,//最小显示数'padding'=>3,//spacing'height'=>34,//高度'width'=>90,//宽度'foreColor'=>0xffffff,//字体颜色'offset'=>4//设置字符偏移有效果],'error'=>['class'=>'yii\web\ErrorAction',]];}}2。在视图中输出验证码图片注意请查看代码中html注释部分

;'captcha-img','captchaAction'=>'site/captcha','imageOptions'=>['id'=>'captcha-img','title'=>'Change','style'=>'cursor:pointer;'],'template'=>'{image}']);?>
登录3。解决验证码不刷新的问题这里使用js来解决这个问题。通常验证码需要点击刷新,刷新页面时也会刷新。但是,如果Yii2验证码是js控制的,更新验证码地址实际上是行不通的,不过我们还是可以通过下面的方式来弥补$(function(){//解决验证码不刷新changeVerifyCode();$('#captcha-img').click(function(){changeVerifyCode();});});//更改或重新加载验证码函数changeVerifyCode(){//项目URLvaradminUrl=$('#admin-url').val();$.ajax({//使用ajax请求site/captcha方法,添加refresh参数,接口返回json数据url:adminUrl+"index.php/site/captcha?refresh",dataType:'json',cache:false,success:function(data){//将替换验证码图片中的图片地址$("#captcha-img").attr('src',data['url']);}});}