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中的正规表达式(二)
Oct 09 PHP
PHP面向对象分析设计的经验原则
Sep 20 PHP
php 更新数据库中断的解决方法
Jun 05 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
php删除数组元素示例分享
Feb 17 PHP
php中的静态变量的基本用法
Mar 20 PHP
yii的CURD操作实例详解
Dec 04 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
laravel中命名路由的使用方法
Feb 24 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP调用三种数据库的方法(3)
2006/10/09 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
浅析JavaScript中的事件机制
2015/06/04 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
详解python之配置日志的几种方式
2017/05/22 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
django 模型中的计算字段实例
2020/05/19 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
大学生实习证明范本
2014/01/15 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
公司周年庆活动方案
2014/08/25 职场文书
招标授权委托书样本
2014/09/23 职场文书
建筑工地文明标语
2014/10/09 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
银行先进个人总结
2015/02/15 职场文书
教育教学工作反思
2016/02/24 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS