点击这里给我发消息 点击这里给我发消息

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

添加时间:2013-12-6
    相关阅读: 开发 PHP 框架
 

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,
        )

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册