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之面向对象
May 15 PHP
基于php下载文件的详解
Jun 02 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
Yii框架上传图片用法总结
Mar 28 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
24条货真价实的PHP代码优化技巧
Jul 28 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php 基础函数
Feb 10 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
php生成短域名函数
2015/03/23 PHP
fromCharCode和charCodeAt 方法
2006/12/27 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
浅析Jquery操作select
2016/12/13 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
基于Python的身份证号码自动生成程序
2014/08/15 Python
Python fileinput模块使用实例
2015/05/28 Python
Python简单读取json文件功能示例
2017/11/30 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
django+echart数据动态显示的例子
2019/08/12 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
如何表示python中的相对路径
2020/07/08 Python
写给女朋友的道歉信
2014/01/08 职场文书
社区庆八一活动方案
2014/02/02 职场文书
书法大赛策划方案
2014/06/04 职场文书
纪律教育月活动总结
2014/08/26 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
地心历险记观后感
2015/06/15 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers