Yii2.0 提供了验证码组件。调用起来比较方便。以登录页面添加验证码为例。

1. 模型中添加字段和验证规则。

common\models\LoginForm

添加如下代码

public $captcha;

//rules() 方法内添加
['captcha', 'required'],
['captcha', 'captcha'],

2. 控制器中添加captcha的action

backend\controllers\SiteController

    public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
// 新添加的
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
],
];
}

3. 视图中引入验证码widget

\backend\views\site\login.php

use yii\captcha\Captcha;

<?= $form->field($model, 'captcha')->widget(Captcha::className()) ?>

需要注意的是这个widget包含了一个显示图片的img标签和一个输入验证码的文本框。 比较丑。可以稍微调整

<?= $form->field($model, 'captcha')->widget(Captcha::className(),['options' => [
'placeholder' => '请输入上方显示的字母'
,'class' => 'form-control'
,'style' => 'margin-top:10px;'
]])->label(false); ?>

注意事项:

1. 图片访问地址是/site/captcha?v=5538ed905b396,但显示的是个叉叉。

有可能地址被限制访问了。在site控制中的behaviors,将captcha动作加入到可访问列表中

    public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
   // 加入captcha,使其可访问/site/captcha
'actions' => ['login', 'error','captcha'],
'allow' => true,
].........
],
],
];
}

2. 点击图片不刷新新的验证码

查看下是否加载了yii.js ,yii.valiadation.js ,yii.captcha.js等yii的asset包

如果没有,应该是该视图对应的layout问题,尝试在$content上下加入<?php $this->beginBody() ?>和<?php $this->endBody() ?>。

Yii 2.0 使用验证码的更多相关文章

  1. [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]

    Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...

  2. 使用nginx部署Yii 2.0\yii-basic-app-2.0.5

    nginx.conf #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log noti ...

  3. Yii Framework2.0开发教程(5)数据库mysql性能

    继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...

  4. Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug

    Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug,我是直接下载Archive文件安装的,非Composer方式安装 Yii 框架之前是支持在Url中包含大写字母的 最新的Yii 2 ...

  5. thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法

    这篇文章主要介绍了thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法,结合简单示例形式分析了thinkPHP5框架验证码相关配置.后台验证.前台刷新等操作技巧,学习thinkphp源码的朋 ...

  6. 阻止YII 1.0自动加载内置JQUERY库

    有些时候我们会在项目中用到很多js库, 因为Yii 1.0框架会默认自动加载一些自带核心库, 很容易引起冲突问题, 下面的代码就展示了如何在Yii 1.0框架下取消jQuery自动加载. Open C ...

  7. Yii 2.0 query模式语法

    项目使用Yii 2.0版本开发,个人一直喜好使用(new \yii\db\Query())模式操作数据,把增.删.查.改这4种情况的写法整理出来,方便查阅和记忆. 增加 - insert use Yi ...

  8. Yii 2.0版本调试输出SQL语句

    项目是基于框架Yii 2.0开发的. 今天梳理一些数据统计功能代码的时候,想把当前运行的sql语句打印出来,然后放到navicat工具里面运行,并分析一下运行效率和调优方案,之前大部分时候都是写增加. ...

  9. thinkphp5.0的验证码安装和相关错误

    thinkphp5.0的验证码安装和相关错误 问题 只要是之前使用thinkphp5框架搭建网站的时候发现不管如何调用验证码都无法使用,按照官网要求,使用composer安装验证码出现报错Fatal ...

随机推荐

  1. WiFi密码忘记了怎么办之解决方案

    随着科技不断进步,网络产品也越来越便宜了.家家户户基本上都有能力装上宽带. 但是有的时候,时间久了,我们可能会忘记密码(密码设置比较复杂的情况下).那么如何找到密码呢? 通常的办法有很多,百度或者Go ...

  2. js 键盘点击事件

    回车键(Enter)的触发事件  js 代码如下: document.onkeydown = function (e) { if (!e) e = window.event; if ((e.keyCo ...

  3. cocos2d-x 音效中断问题

    做跑酷重吃金币播音效时,播放其它音效会使得音效所有中断,最后发现时音效上限的问题,2.2.3默认的似乎是5个音效,改动成50后问题解决. 在java中的org.cocos2dx.lib包下有一个Coc ...

  4. centos安装GD库失败

    Error: Package: php-gd-5.6.11-1.el6.remi.x86_64 (remi-php56) Requires: gd-last(x86-64) >= 2.1.1 E ...

  5. 原生js创建模态框

    1.效果图如下: 2.代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  6. Linux-- 文件编辑器 vi/vim(1)

    初识 vi/vim 文本编辑器 1.vi 和 vim 相同,都是文本编辑器,在 vi 模式下可以查看文本,编辑文本,是 Linux 最常用的命令,vi 模式下分为三部分,第一部分一般模式,在一般模式中 ...

  7. 【css】table标签内的td、th如何设置固定宽度,而不是自适应?

    table{ min-width: %; } td{ min-width: 100px; } .table-container{ overflow:auto; display: block; } &l ...

  8. Ubuntu下配置jdk和tomcat

    一.配置jdk 更新系统 apt-get update 添加ppa add-apt-repository ppa:webupd8team/java 开始安装 apt-get install oracl ...

  9. react-navigation的超级大坑

    本文针对react-navigation^3.0.0版本,版本不对的话,请不要看本文,直接看官方英文文档 ​ 最近一直在学习RN,没找到什么好的视频,所以一直看文档,一路上来虽然遇到一些乱七八糟的bu ...

  10. restframework序列化使用方法

    serializers.Serializer class Userinfoserializers(serializers.Serializer): username = serializers.Cha ...