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中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
php 生成文字png图片的代码
Apr 17 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
php 获取本地IP代码
Jun 23 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
php中JSON的使用与转换
Jan 14 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
php实现求相对时间函数
Jun 15 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 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调用三种数据库的方法(3)
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
基于php 随机数的深入理解
2013/06/05 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
go和python变量赋值遇到的一个问题
2017/08/31 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
Python简单基础小程序的实例代码
2019/04/28 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
详解Python3中的 input() 函数
2020/03/18 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
外贸业务员的岗位职责
2013/11/23 职场文书
小学教师事迹材料
2014/01/13 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
2014离婚协议书范文
2014/09/10 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
社会心理学学习心得体会
2016/01/22 职场文书