Yii的源码包里面是自带有验证码的相关类的,因此在使用验证码的时候无需再加载外部验证码类来助阵了。下面本文将介绍一下如何在项目中加载Yii自带的验证码功能。

具体分三步:

(1)在需要加载验证码的controllers文件里面添加如下代码:

01public function actions(){
02    return array(
03        'captcha'=> array
04            'class'=>'Captcha',
05            'width'=>65, //默认120
06            'height'=>25, //默认50
07            'padding'=>0, //文字周边填充大小
08            'backColor'=>0xFFFFFF, //背景颜色
09            'foreColor'=>0x2040A0, //字体颜色
10            'minLength'=>4, //设置最短为4位
11            'maxLength'=>4, //设置最长为4位,生成的code在6-7直接rand了
12            'transparent'=>false, //显示为透明,默认中可以看到为false
13            'offset'=>1, //设置字符偏移量
14            'testLimit'=>0 //限制相同验证码出现的次数,0位不限制
15        )
16    );
17}

(2)在controllers文件所对应的models文件里面添加如下代码:

01<?php
02......
03public $verifyCode;//必须先定义
04......
05public function rules(){
06    return array(
07        ......
08        //注意这里的'on'=>'login',即action=login的时候显示
09        array('verifyCode','captcha','on'=>'login','allowEmpty'=>!extension_loaded('gd')),
10    );
11}
12......
13?>

(3)在需要加载验证码的views页面添加如下代码:

01<?php
02$this->widget('CCaptcha',
03    array(
04        'showRefreshButton'=>false,
05        'clickableImage'=>true,
06        'imageOptions'=>array(
07            'alt'=>'点击换图',
08            'title'=>'点击换图',
09            'id'=>'checkcodeImg',
10            'style'=>'cursor:pointer;'
11        )
12    )
13);?>
05-28 20:44