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自动加载的两种实现方法
Jun 21 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
Yii框架表单模型和验证用法
May 20 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
PHP自动识别当前使用移动终端
May 21 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 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用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
详解React中setState回调函数
2018/06/14 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
一则python3的简单爬虫代码
2014/05/26 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python中实现switch功能实例解析
2018/01/11 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
简单了解python数组的基本操作
2019/11/26 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
Python异常处理机制结构实例解析
2020/07/23 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
软件测试工程师笔试题带答案
2015/03/27 面试题
领班岗位职责范文
2014/02/06 职场文书
《四季》教学反思
2014/04/08 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS