验证码是现在很多网站增加安全性的一种方法, 在Yii Framework中,作者已经内设了CCaptcha扩展来实现验证码功能,而我们需要知道的只是如何去使用他。

1. CCaptcha扩展需要有CCaptchaAction的支持,所以我们要在controller中集成actions这个方法,添加下列代码,让当前的controller支持CCaptchaAction。

public function actions() {
    return array(
        'captcha'=> array(
            //加载外部的action class
	    'class' => 'CCaptchaAction',
            //设置验证码图片背景色属性
	    'backColor' => 0xffffff,
	),
    );
}

2. 我们通过在view中插入下列代码来显示认证码组件:

<!--加载验证码组件-->
<?php widget("CCaptcha"); ?>

3. 我们需要在我们的form model中添加一个verifycode的属性来存放用户输入的验证码,然后通过captcha验证器来验证用户输入的验证码的准确性。

class User extends CActiveRecord {
    public $verifyCode; //为User Model 设置一个新的属性
 
    ..........
 
    public function rules() {
    	return array(
	    .........
	    array('verifyCode', 'captcha', 'on'=>'login', 'allowEmpty'=> !extension_loaded('gd')),
	);
    }
    ...........
    ...........
}

上面代码的验证方法表示: 通过captcha验证器在login场景中验证verifyCode属性。在allowEmpty字段中,我们使用了一个条件语句来做判断,表示当gd库没有加载的时候允许属性值为空。

完成上述步骤,我们现在应该可以看到一个下面这样带有验证码的登录表单

Yii Framework 验证码使用_验证码

ok,快去实现你自己的Captcha功能吧