验证码是现在很多网站增加安全性的一种方法, 在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功能吧