Yii中驗證碼的設置(五)

很久沒寫了,正好有時間了,把以前想寫的先寫上。關於yii中的驗證碼,這裏介紹下驗證碼的使用,好比後臺登錄的時候輸入完用戶名和密碼後,須要再輸入驗證碼這樣會更加的安全。php

從整體來講 大概分爲4個步驟css

1.在對用的控制器裏建一個新的控制器方法(actions)web

2.輸入驗證碼的文本框也用小物件安全

3.修改關於驗證碼的核心類文件(CCapthcaAction) 由於存在一點bugyii

4.而後就是在model裏的rules設置規則,判斷輸入的驗證碼是否正確了this

接下來就詳細說下吧spa

 

1.我是在後臺登錄頁面裏用 因此我就在登錄裏的controller裏開始開發了,下面是生成驗證碼的方法:code

  public function actions(){
      return array(

       'captcha'=>array(
           'class'=>'system.web.widgets.captcha.CCaptchaAction', //引入驗證碼類,看我寫的路徑 我想你應該知道這個類在哪裏了
           'height'=>25,       //驗證碼畫布長度
           'width'=>80,       //驗證碼畫布寬度 
           'minLength'=>4,    //驗證碼的最小長度
           'maxLength'=>4     //驗證碼的最大長度

       ),

      );

     }

2.顯示出來component

2種方法 會了第一種  再來第二種 ,在view裏寫orm

第一種 先把驗證碼輸出:<?php $this->widget('CCaptcha')?>

第二種就是正常的需求了 不只要輸出 還要 能夠刷新更換了:

<?php

$this->widget('CCaptcha',array('showRefreshButton'=>false,'clickableImage'=>true,'imageOptions'=>array('alt'=>'點擊換圖','title'=>'點擊換圖','style'=>'cursor:pointer')));

?>

showRefreshButton的意思是是否顯示更換驗證碼的按鈕,意思就是若是這個按鈕顯示的話 ,每次點擊這個按鈕,驗證碼將進行更換
clickableImage 就是點擊驗證碼圖片是否進行更換true固然就是贊成了



而後可能你就須要對比下生成的驗證碼是否相同,在view裏能夠加個小物件判斷
<?php echo $from->error($loginForm,'captcha')?>


三、修改下核心類

找到framework/web/widgets/captcha/CCapthcaAction.php 文件,將run方法進行如上修改,加入一個true 便可。


4.設置規則 ,判斷驗證碼正確與否
到了最後一步 ,來吧 在model裏書寫驗證規則 ,在rules裏

array('captcha','captcha','message'=>'驗證碼錯誤'),
將本身填寫的和 系統生成的對比,若是不一樣則提示驗證碼錯誤,
而後別忘記顯示出來
在 actionindex裏

有點懶就截圖了 仍是logincontroller裏 判斷下是否有數據提交 若是有則用attributes進行過濾接受,接收後 判斷輸入的驗證碼是否正確便可。

 

 

請注意一下這裏我改爲了this->render() 由於以前方法不能引入系統本身的css和js 因此致使驗證碼相關類文件沒法加載因此改爲了如上的render,改爲這種,發現前臺的頭和尾也引入了,怎麼辦 ,咱們把前臺的compoents下的Controller.php文件複製由於到後臺的admin模塊下的components下的Controller.php,在裏面引入一個新的layouts 就好了 這樣以前的頭和尾 就變成了如今新的頭和尾。(若是最後這段看不懂前臺後臺的話,麻煩看下我博客的 yii講解的1-4)

 

而後就大工告成了,驗證碼能夠在頁面刷新了

相關文章
相關標籤/搜索