1. 程式人生 > >Yii中驗證碼的設置(五)

Yii中驗證碼的設置(五)

截圖 步驟 驗證 時間 接下來 framework height als aac

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

從總體來說 大概分為4個步驟

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

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

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

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

接下來就詳細說下吧

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

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

2.顯示出來

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

第一種 先把驗證碼輸出:<?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‘)?>


3、修改下核心類

技術分享圖片

找到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)

然後就大工告成了,驗證碼可以在頁面刷新了

Yii中驗證碼的設置(五)