首頁 >後端開發 >php教程 >PHP開發框架Yii Framework教學(20) UI元件 Captcha範例

PHP開發框架Yii Framework教學(20) UI元件 Captcha範例

黄舟
黄舟原創
2017-01-21 10:33:141359瀏覽

Captcha(全自動區分計算機和人類的圖靈測試-Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱CAPTCHA)俗稱驗證碼,是一種區分用戶是計算機和人的公共全自動程序。在CAPTCHA測試中,作為伺服器的電腦會自動產生一個問題由使用者來解答。這個問題可以由電腦產生並評判,但是必須只有人類才能解答。由於電腦無法解 答CAPTCHA的問題,所以回答出問題的使用者就可以被認為是人類。

Yii Framework提供了類CCaptcha和CCaptchaAction用於支持驗證碼,要注意的是這個功能需要有PHPGD擴展支持,可以透過Yii的Requirements應用來查詢:

PHP開發框架Yii Framework教學(20) UI元件 Captcha範例

如果顯示WarGDning,可以透過安裝擴充庫,並修改PHP.ini開啟該功能。

CCaptcha也提供方法 CCaptcha::checkRequirements() 來偵測GD函式庫是否已安裝。

本例透過修改Yii Framework 開發教學(16) UI 元件 StarRating範例 為其新增Captcha功能,而只有輸入的驗證碼正確時,使用者評分才有效,避免機器自動評分。

首先是修改 DataModel,增加一個屬性verifyCode 用來存放使用者輸入的驗證碼,並給其添加CCaptchaValidator驗證。

class
DataModel extends CFormModel{public $rating;public $verifyCode;
public function rules(){
return array(array('rating,verifyCode', 'safe'),
array('verifyCode','captcha','allowEmpty'=>!CCaptcha::checkRequirements()),);
}}

接著修改SiteController,加入actions方法,Captcha元件缺省使用CCaptchaAction,其缺省ID為captcha。

public function actions()
{
return array(
'captcha'=>array(
'class' => 'CCaptchaAction',
));
}

下面就可以在View中加入Captcha元件了:

beginWidget('CActiveForm'); ?>
errorSummary($model); ?>widget('CStarRating',
array('model'=>$model,'attribute'=>'rating','name'=>'rating','value'=>3,)); 
?>
label($model,'verifyCode')
 ?>
 widget('CCaptcha'); 
 ?>textField($model,'verifyCode') ?>
endWidget(); ?>

PHP開發框架Yii Framework教學(20) UI元件 Captcha範例

以上就是PHP開發框架Yii Framework教學(20) UI元件Captcha範例的內容,更多相關內容請關注PHP中文網(www. php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn