Yii中驗證碼的設置(五)
好久沒寫了,正好有時間了,把之前想寫的先寫上。關於yii中的驗證碼,這裏介紹下驗證碼的使用,比如後臺登陸的時候輸入完用戶名和密碼後,需要再輸入驗證碼這樣會更加的安全。
從總體來說 大概分為4個步驟
1.在對用的控制器裏建一個新的控制器方法(actions)
2.輸入驗證碼的文本框也用小物件
3.修改關於驗證碼的核心類文件(CCapthcaAction) 因為存在一點bug
4.然後就是在model裏的rules設置規則,判斷輸入的驗證碼是否正確了
接下來就詳細說下吧
1.我是在後臺登陸頁面裏用 所以我就在登陸裏的controller裏開始開發了,下面是生成驗證碼的方法:
publicfunction 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中驗證碼的設置(五)