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 相关文章推荐
function.inc.php超越php
Dec 09 PHP
火车头discuz6.1 完美采集的php接口文件
Sep 13 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
php绘制一条弧线的方法
Jan 24 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 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
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
SVG实现时钟效果
2018/07/17 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
会议开场欢迎词
2014/01/15 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
七年级音乐教学反思
2014/01/26 职场文书
司仪主持词两篇
2014/03/22 职场文书
企业委托书范本
2014/09/13 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
会议通知范文
2015/04/15 职场文书