PHP开发框架Yii Framework教程(21) UI 组件 自定义Captcha示例

Yii内置的Captcha基本上可以满足大部分需求,如果你对验证码有特殊要求,你可以自定义Captcha,这主要是通过扩展 CCaptchaAction来实现的,本例自定义一个验证码功能,随机产生10以内的加减法,用户需要计算出正确的结果才能通过验证。
本例基于上例Yii Framework 开发教程(20) UI 组件 Captcha示例,做如下修改

首先在protected/components 目 录下创建一个MathCaptchaAction,重载generateVerifyCode, renderImage等方法:

class MathCaptchaAction 

extends CCaptchaAction
{      

    protected function generateVerifyCode()
    {
        return mt_rand((int)$this->minLength,
            (int)$this->maxLength);
    }      

    public function renderImage($code)
    {
        parent::renderImage($this->getText($code));
    }      

    protected function getText($code)
    {
        $code=(int)$code;
        $rand=mt_rand(1,$code-1);
        $op=mt_rand(0,1);
        if($op)
        {      

            return $code-$rand. '+' . $rand;      

        }else
        {
            return $code+$rand. '-' . $rand;
        }
    }
}

然后修改SiteController的rules 使用新创建的MathCaptchaAction

public function actions()
{
    return array(
        'captcha'=>array(
                'class' => 'MathCaptchaAction',
                'minLength' => 1,
                'maxLength' => 10,
        ));
}

本例下载:http://www.imobilebbs.com/download/yii/CustomCaptchaDemo.zip

查看全套教程:http://www.bianceng.cn/webkf/PHP/201301/35265.htm

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索return
, function
, rand
, protected
, code
, 自定义ui图片需求
, Code UI
, captcha
, yii2_rules自定义
, Yii验证码
, yii2.0验证用户名
, yii2.0验证邮箱
, yii自定义验证
yii验证规则
yii2 captcha、yii2 captcha 验证、yii captcha 验证、yii captcha、yii2 captcha 刷新,以便于您获取更多的相关知识。

时间: 2024-08-24 09:19:48

PHP开发框架Yii Framework教程(21) UI 组件 自定义Captcha示例的相关文章

PHP开发框架Yii Framework教程(10) UI组件 自定义组件

在介绍Yii内置UI组件之前,先介绍一下如何自定义组件,这样也有助于理解CWidget的用法,自定义组件就是重载 CWidget 的init() 和 run() 方法. class MyWidget extends CWidget { public function init() { // 此方法会被 CController::beginWidget() 调用 } public function run() { // 此方法会被 CController::endWidget() 调用 } } 本

PHP开发框架Yii Framework教程(22) UI组件 Zii组件简介

前面介绍了Yii框架支持的部分UI组件,除了前面介绍的UI组件外,Yii框架还提供了Zii组件库,包括列表视图ListView,表 格视图GridView,此外还包括一些基于JQuery的UI组件,如AutoComplete,DataPicker, Button, Drag 和 Drop等,Zii组件主要 定义在包zii.* ,zii.widget.* 开发框架Yii Framework教程(22) UI组件 Zii组件简介-yii2 user组件"> 由于其中部分UI组件和数据源(Dat

PHP开发框架Yii Framework教程(20) UI组件 Captcha示例

Captcha(全自动区分计算机和人类的图灵测试-Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA)俗称验证码,是一种区分用户是计算机和人的公共全自动程序.在CAPTCHA测试中,作为服务器的 计算机会自动生成一个问题由用户来解答.这个问题可以由计算机生成并评判,但是必须只有人类才能解答.由于计算机无法解 答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类. Yii

PHP开发框架Yii Framework教程(18) UI 组件 TextHighlighter示例

CTextHighlighter用来格式化显示代码,目前支持显示的语言有ABAP, CPP, CSS, DIFF, DTD, HTML, JAVA, JAVASCRIPT, MYSQL, PERL, PHP, PYTHON, RUBY, SQL, XML,显示代码时也可以显示行号,通过showLineNumbers=TRUE打开行号显示. 本例显示PHP代码,一个带行号,一个不带行号: PHP code <!--?php $this--->beginWidget('CTextHighlight

PHP开发框架Yii Framework教程(17) UI 组件 TabView示例

CTabView 用来显示分页标签,使用TabView的基本方法是配置tabs属性,每个Tab可以配置如下属性 title:标签标 题. content: 标签显示内容. view: 标签显示View的名称,如果同时制定Content,则显示Content内容. url: 点击该 标签时页面重定向到指定URL. data: 当指定View属性时传给该View的属性数组. 本例显示三个标签页,分别使用不同 的标签内容: <center class="form"> <?p

PHP开发框架Yii Framework教程(16) UI 组件 StarRating示例

CStarRating 主要用于评分,显示一组星星(5 个)用于打分. 基本用法如下 <center class="form"> <?php $form=$this->beginWidget('CActiveForm'); ?> <?php $this->widget('CStarRating',array( 'model'=>$model, 'attribute'=>'rating', 'name'=>'rating', '

PHP开发框架Yii Framework教程(14) UI 组件 MaskedTextField示例

CMaskedTextField为格式输入框,可以为文本框指定Mask限制用户可以出入的文本格式,如本例使用99.99.9999 ,可以只允 许输入类似日期的文本. 修改View,添加CMaskedTextField 组件 <?php $this->widget ('CMaskedTextField',array( 'model'=>$model, 'attribute'=>'date', 'name'=>'date', 'mask'=>'99.99.9999', 'h

PHP开发框架Yii Framework教程(13) UI 组件 ContentDecorator示例

和Java Swing中类似Yii Framework 中的Layout 也允许嵌套,这是通过CContentDecorator来实现的,不过代码中并不需要 直接使用CContentDecorator ,而是在定义layout使用 $this->beginContent('path/to/view'); // ... content to be decorated $this->endContent(); 其中view 为另外一个布局. 本例定义四个Layout,一个嵌套一个: 开发框架Yii

PHP开发框架Yii Framework教程(12) UI 组件 ClipWidget示例

CClipWidget提供了类似录制"宏"的功能,定义在CClipWidget的init和run之间的内容可以存放在Controller的Clip变量中 ,然后重新回放到任意其它位置. CClipWidget封装的是CBaseController的beginClip和 endClip,CBaseController的 beginClip和 endClip的基本用法如下: 首先定义Clip $this->beginClip('clipID'); // ... display the