Yii中验证码的设置(五)

好久没写了,正好有时间了,把之前想写的先写上。关于yii中的验证码,这里介绍下验证码的使用,比如后台登陆的时候输入完用户名和密码后,需要再输入验证码这样会更加的安全。

从总体来说 大概分为4个步骤

1.在对用的控制器里建一个新的控制器方法(actions)

2.输入验证码的文本框也用小物件

3.修改关于验证码的核心类文件(CCapthcaAction) 因为存在一点bug

4.然后就是在model里的rules设置规则,判断输入的验证码是否正确了

接下来就详细说下吧

1.我是在后台登陆页面里用 所以我就在登陆里的controller里开始开发了,下面是生成验证码的方法:

  public function actions(){
      return array(

       ‘captcha‘=>array(
           ‘class‘=>‘system.web.widgets.captcha.CCaptchaAction‘, //引入验证码类,看我写的路径 我想你应该知道这个类在哪里了
           ‘height‘=>25,       //验证码画布长度
           ‘width‘=>80,       //验证码画布宽度
           ‘minLength‘=>4,    //验证码的最小长度
           ‘maxLength‘=>4     //验证码的最大长度

       ),

      );

     }

2.显示出来

2种方法 会了第一种  再来第二种 ,在view里写

第一种 先把验证码输出:<?php $this->widget(‘CCaptcha‘)?>

第二种就是正常的需求了 不仅要输出 还要 可以刷新更换了:

<?php

$this->widget(‘CCaptcha‘,array(‘showRefreshButton‘=>false,‘clickableImage‘=>true,‘imageOptions‘=>array(‘alt‘=>‘点击换图‘,‘title‘=>‘点击换图‘,‘style‘=>‘cursor:pointer‘)));

?>

showRefreshButton的意思是是否显示更换验证码的按钮,意思就是如果这个按钮显示的话 ,每次点击这个按钮,验证码将进行更换clickableImage 就是点击验证码图片是否进行更换true当然就是同意了

然后可能你就需要对比下生成的验证码是否相同,在view里可以加个小物件判断<?php echo $from->error($loginForm,‘captcha‘)?>

3、修改下核心类

找到framework/web/widgets/captcha/CCapthcaAction.php 文件,将run方法进行如上修改,加入一个true 即可。

4.设置规则 ,判断验证码正确与否到了最后一步 ,来吧  在model里书写验证规则  ,在rules里
array(‘captcha‘,‘captcha‘,‘message‘=>‘验证码错误‘),将自己填写的和 系统生成的对比,如果不同则提示验证码错误,然后别忘记显示出来在 actionindex里

有点懒就截图了 还是logincontroller里 判断下是否有数据提交 如果有则用attributes进行过滤接受,接收后 判断输入的验证码是否正确即可。

请注意一下这里我改成了this->render() 因为之前方法不能引入系统自己的css和js 所以导致验证码相关类文件无法加载所以改成了如上的render,改成这种,发现前台的头和尾也引入了,怎么办 ,我们把前台的compoents下的Controller.php文件复制因为到后台的admin模块下的components下的Controller.php,在里面引入一个新的layouts 就行了 这样之前的头和尾 就变成了现在新的头和尾。(如果最后这段看不懂前台后台的话,麻烦看下我博客的 yii讲解的1-4)

然后就大工告成了,验证码可以在页面刷新了



原文地址:https://www.cnblogs.com/HoverM/p/9949996.html

时间: 2024-10-12 19:19:42

Yii中验证码的设置(五)的相关文章

制作由下向上的滚动字幕,字幕内容要求包含网站超级链接和图片超级链接, 使用鼠标移动事件控制字幕运动和停止。 2、在下拉列表框中设置五种以上颜色,选择颜色后, 滚动字幕背景色改变成相应颜色

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <!--        时间:2016-12-28        描述:1.制作由下向上的滚动字幕,字幕内容要求包含网站超级链接和图片超级链接,                   使用鼠标移动事件控制

yii中数据的"增删改查"相关工作!(此文比较乱,需细看)

使用findByPk()根据数据表主键查询的是对象,不需要使用foreach()循环出来 但是使用findall()和find()查询的是对象类型的数组需要使用foreach()循环出来 ======================================= public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCommand($sql); $query = $r

struts2中验证码的生成和使用

第一步生产字符串: package com.yancode.demo; import java.util.Arrays; /* * 一步一步来,要生成验证码图片,首先要有验证码,然后才能在画在图片上.为了能够灵活控制验证码, * 特别编写了SecurityCode类,它向外提供随机字符串.并且可以控制字符串的长度和难度. * SecurityCode类中提供的验证码分三个难度,易(全数字).中(数字+小写英文).难(数字+大小写英文). * 难度使用枚举SecurityCodeLevle表示,避

ASP.NET在实际开发中验证码的用法

在网上有看到很多关于验证码的代码,很多都只是生成一张验证码图片,然而在实际登陆验证模块,验证码要怎么添加进去或者说怎么运用.和实际项目开发中要怎么使用验证码,我自己总结了几点. 一.在实际开发登陆模块的验证码,程序员是将验证码的文本值(字符串)存在Session中的,然后在登陆验证的时候,通过Session取值进行判断的,这样效率会高很多. 二.然而在写验证码的时候要想通过Session存值,就必须实现System.Web.SessionState.IRequiresSessionState这个

登录页面动态验证码的设置

登录页面动态验证码的设置 采用php中创建对象的思想进行动态验证码的设置 1.创建出一个背景图片,用来存放动态码输出位置 1 function createImage(){ 2 // 创建图片对象,并设置图片的宽高 imagecreatetruecolor 3 $this->image = imagecreatetruecolor($this->width, $this->height); 4 // 图片创建背景颜色 5 // rand(下界,上界), php中的随机数 6 $backg

在yii中使用分页

yii中使用分页很方便,如下两种方法: 在控制器中: 1. $criteria = new CDbCriteria(); //new cdbcriteria数据库$criteria->id = 'id ASC'; //排序规则 $count = Exchange::model()->count($criteria); $pager = new CPagination($count); $pager->pageSize=30; $pager->applyLimit($criteria

在yii中使用memcache

yii中可以很方便的使用memcache 一.配置在main.php的components中加入cache配置 [php] view plaincopy array( 'components'=>array( 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array( 'host'=>'server1', 'port'=>11211, 'weight'=>60, ), array( 'host'=&

yii2中验证码的添加

首先,在模型中添加验证码字段: public function rules(){ return ['verifyCode', 'captcha'], } 其次,可以在函数attributeLabels中添加前台页面中验证码的字段名称: public function atrributeLabels(){ return ['verifyCode'=>'Verification Code', ]; } 然后,在视图文件中做如下修改: use yii\captcha\Captcha; <?= $fo

yii中分页功能的使用

CDbCriteria就是这个类包的使用,这个类包是yii自带专门用来处理类似分类这样的功能的.而我们使用yii框架然后调用这个方法会起到事半功倍的效果,会发现使用这个能够节省很多的时间,让你快速的使用PHP中分页的功能. 还要使用的一个类包就是CPagination,具体的元素属性就不解释了,可以直接连接过去看API 第一步: 在控制器里面加上一下的代码: $criteria = new CDbCriteria(); $criteria->alias = 'post';//要查询表的别名 $c