Yii2增加验证码步骤详解


Posted in PHP onApril 25, 2016

本来以为yii2框架验证码这块很全面,尝试百度google了一下,大多数教程写的零零散散不全面,想着自己写一份带有完整步骤的验证码教程。

我们假设site/login 表单登录需要增加验证码。

1、siteController控制器的actions方法增加captcha设置

public function actions() { 
return [ 
'captcha' => [ 
'class' => 'yii\captcha\CaptchaAction', 
'maxLength' => 4, 
'minLength' => 4 
], 
]; 
}

上面我们简单设置了验证码的位数,有小伙伴好奇都有哪些配置项,这个你可以查看文件 vendor\yiisoft\yii2\captcha,包括验证码背景色,字体文件等设置都可以在这里找到。

2、siteController继续配置。

public function behaviors() { 
return [ 
'access' => [ 
'class' => AccessControl::className(), 
'rules' => [ 
[ 
'actions' => ['login', 'error', 'captcha'], 
'allow' => true, 
], 
], 
]; 
}

为access rules的actions增加captcha方法可访问。

3、我们看看view层,增加验证码input。

use yii\captcha\Captcha; 
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>', 
]) ?>

4、这样还不行,我们还需要增加验证码的验证规则

我们这里用到的是LoginForm,因此修改LoginForm文件

class LoginForm extends Model { 
//...... public $verifyCode; 
public function rules() { 
return [ 
//...... 
['verifyCode', 'captcha'], 
]; 
} 
public function attributeLabels() { 
return [
'verifyCode' => '', //验证码的名称,根据个人喜好设定 
]; 
} 
} 
//定义了verifyCode属性 
//rules规则添加了验证 
//label中定义了其显示名称

5、到第四步基本上配置好验证码就会正常显示了。如果你的后台设定了rbac权限控制,恐怕你仍然需要在config内为as accss增加/site/captcha可访问。

6、看效果就好了。

Yii2增加验证码步骤详解

7、有同学问为啥页面刷新验证码不跟着刷新,我个人觉得刷不刷新不重要,当你输错验证码页面刷新的时候验证码才会刷新。如果你非要刷新页面验证码跟着刷新,尝试一种简单的方法实现。

$('验证码对象').click();

即在页面刷新的时候重新点击一次验证码进行强制刷新。

以上所述是小编给大家介绍的Yii2增加验证码步骤,希望对大家有所帮助!

PHP 相关文章推荐
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
PHP中如何定义和使用常量
Feb 28 PHP
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
PHP数据类型的总结分析
Jun 13 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
Yii实现显示静态页的方法
Apr 25 #PHP
mysql_escape_string()函数用法分析
Apr 25 #PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 #PHP
PHP引用的调用方法分析
Apr 25 #PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 #PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 #PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 #PHP
You might like
如何判断php数组的维度
2013/06/10 PHP
php动态生成函数示例
2014/03/21 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
vue实现锚点定位功能
2021/06/29 Vue.js
python开发的自动化运维工具ansible详解
2021/08/07 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
浅析JavaScript中的变量提升
2022/06/01 Javascript
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript