验证码是现在很多网站增加安全性的一种方法, 在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库没有加载的时候允许属性值为空。
完成上述步骤,我们现在应该可以看到一个下面这样带有验证码的登录表单

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