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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
php-msf源码详解
Dec 25 PHP
Yii框架视图、视图布局、视图数据块操作示例
Oct 14 PHP
PHP实现考试倒计时功能代码
Apr 16 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP查询快递信息的方法
2015/03/07 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
vue.js中toast用法及使用toast弹框的实例代码
2018/08/27 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
深入理解Django的自定义过滤器
2017/10/17 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
pandas通过loc生成新的列方法
2018/11/28 Python
详解python配置虚拟环境
2019/04/08 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
幼儿园小班教师个人工作总结
2015/02/06 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
2016教师国培研修感言
2015/12/08 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
人民币使用说明书
2019/04/17 职场文书
辞职申请书范本
2019/05/20 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS