解決Yii自帶的驗證碼不隨頁面重新整理自動重新整理的問題
如何新增驗證碼,這裡就不再多說了,網上有很多的資料。自己按照網上的資料搜尋新增即可,
驗證碼新增好之後,會發現,重新整理頁面Yii的驗證碼並不會自動重新整理,目前解決這個的辦法有三種:
一、修改原始碼CCaptchaAction.php的run方法,不推薦
二、寫一個js,在頁面重新整理的時候呼叫js自動點選驗證碼圖片實現重新整理,感覺有點...,太依賴js了不太好吧
三、在components資料夾下新建一個檔案Captcha.php
新增如下程式碼,重寫run方法:
class Captcha extends CCaptchaAction{
//重寫run方法,使得驗證碼在頁面重新整理時重新整理
public function run(){
if (isset($_GET[self::REFRESH_GET_VAR])){
$code = $this->getVerifyCode(true);
echo CJSON::encode(array(
'hash1' => $this->generateValidationHash($code),
'hash2' => $this->generateValidationHash(strtolower($code)),
'url' => $this->getController()->createUrl($this->getId(), array('v' => uniqid())),
));
}else {
$this->renderImage($this->getVerifyCode(true));
Yii::app()->end();
}
}
}
之後修改controller中class為captcha即可,程式碼如下
public function actions(){
return array(
'captcha'=>array(
'class'=>'Captcha',
'backColor'=>0xFFFFFF,
'maxLength'=>'4', // 最多生成幾個字元
'minLength'=>'4', // 最少生成幾個字元
'height'=>'40',
'width'=>'230',
'transparent'=>true, //顯示為透明
'testLimit' => 0, //限制相同驗證碼出現的次數,0為不限制
),
);
}
現在再去重新整理一下頁面試試看,驗證碼是不是隨頁面重新整理而重新整理了呢