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 相关文章推荐
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
php 基础函数
Feb 10 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
php对微信支付回调处理的方法
Aug 23 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 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面向对象分析设计的61条军规小结
2010/07/17 PHP
php GeoIP的使用教程
2011/03/09 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
2013/03/19 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python imread、newaxis用法详解
2019/11/04 Python
Python字节单位转换实例
2019/12/05 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
pycharm安装及如何导入numpy
2020/04/03 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
EJB的激活机制
2013/10/25 面试题
总经理职责范文
2013/11/08 职场文书
销售会议开幕词
2015/01/28 职场文书
信仰纪录片观后感
2015/06/08 职场文书
员工给公司的建议书
2019/06/24 职场文书
MySQL读取JSON转换的方式
2022/03/18 MySQL