本文描述yii驗證碼的實現,僅僅是筆者應用的一個小例子,網上也有,總結一下,希望幫助到有需要的Yii愛好者。1、筆者用的是用戶登錄,所以在sitecontroller中加以下代碼:
public function actions() { return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha'=>array( 'class’=>'CCaptchaAction', 'backColor'=>0xFFFFFF, //背景顏色 'minLength'=>4, //最短為4位 'maxLength'=>4, //是長為4位 'transparent'=>true, //顯示為透明,當關閉該選項,才顯示背景顏色 ), );
2、在表單文件中加如下代碼(視圖文件如login.php):
<?php if(CCaptcha::checkRequirements()): ?> <div> <?php echo $form->labelEx($model,’verifyCode’); ?> <br/> <div> <?php $this->widget(‘CCaptcha’); ?> <?php echo $form->textField($model,’verifyCode’); ?> </div> <div>輸入驗證碼 <br/></div> <?php echo $form->error($model,’verifyCode’); ?> </div>
3、在Loginform模型(LoginForm.php)中 加入如下代碼,主要是添加屬性字段,否則會報錯(不存在的屬性 )
public $username; public $password; public $verifyCode; public $rememberMe; private $_identity;
通過上面的操作實際上我們已經可以看到驗證碼了,但是在操作的時候我們會發現不輸入驗證碼仍然可以,原因在於我們還沒有指定驗證是必須的,在LoginForm.php中加上array(‘verifyCode’,'required’)來指定必須,這時我們如果遺漏驗證碼,將會如下圖所示: