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 常用字符串函数总结
Mar 15 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
Dec 25 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
PHP防盗链代码实例
Aug 27 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 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 md5下16位和32位的实现代码
2008/04/09 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP的explode和implode的使用说明
2011/07/17 PHP
php cli换行示例
2014/04/22 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
js href的用法
2010/05/13 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
vue开发拖拽进度条滑动组件
2019/09/21 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
Pytorch to(device)用法
2020/01/08 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Python sorted排序方法如何实现
2020/03/31 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
经管应届生求职信
2013/11/17 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
运动会开幕词
2015/01/28 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python