이 글의 예에서는 Yii가 Captcha 인증 코드를 사용하는 방법을 설명합니다. 참고용으로 공유해 주세요. 자세한 내용은 다음과 같습니다.
자세한 코드는 yii의 자체 샘플 코드 게시 프로젝트를 참조하세요. 인증 코드를 사용하는 문의 양식이 있습니다.
1. 모델:
UserLogin 속성에 확인 코드 추가:
class UserLogin extends CFormModel { public $username; public $password; public $rememberMe; public $verifyCode; public function rules() { return array( // username and password are required array('username, password,verifyCode', 'required'), // rememberMe needs to be a boolean array('rememberMe', 'boolean'), // password needs to be authenticated array('password', 'authenticate'), // verifyCode needs to be entered correctly array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()), ); } /** * Declares attribute labels. */ public function attributeLabels() { return array( 'rememberMe'=>Yii::t('user',"Remember me next time"), 'username'=>Yii::t('user',"username or email"), 'password'=>Yii::t('user',"password"), 'verifyCode'=>Yii::t('user','Verification Code'), ); } }
컨트롤러
매핑 작업 CCaptchaAction 추가
LoginController 컨트롤러public function actions() { return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xf4f4f4, 'padding'=>0, 'height'=>30, 'maxLength'=>4, ), ); } ublic function actionLogin() { if (Yii::app()->user->isGuest) { $model=new UserLogin; // collect user input data if(isset($_POST['UserLogin'])) { $model->attributes=$_POST['UserLogin']; //在此核对验证码 if($this->createAction('captcha')->validate($model->verifyCode, false)) { // validate user input and redirect to previous page if valid if($model->validate()) { //admin login only if( Yii::app()->getModule('user')->isAdmin()==1 ) { $this->lastViset(); if (strpos(Yii::app()->user->returnUrl,'/index.php')!==false) $this->redirect(Yii::app()->controller->module->returnUrl); else $this->redirect(Yii::app()->user->returnUrl); }else {//if no admin when login out $this->redirect(Yii::app()->controller->module->logoutUrl); } } }else {//提示错误 $model->addError('verifyCode','验证码不对'); } } // display the login form $this->render('/user/login',array('model'=>$model)); } else $this->redirect(Yii::app()->controller->module->returnUrl); }
사용자 이름과 비밀번호를 확인하기 전에 확인 코드를 확인하세요:
if($this->createAction('captcha')->validate($model->verifyCode, false)) {
3. 🎜>
보기에 인증코드 이미지 표시, 입력창<?php $this->widget('CCaptcha'); ?> <?php echo CHtml::activeTextField($model,'verifyCode',array('tabindex'=>1)); ?> <img src="http://www.XXXX.net/uploads/123456.jpg" alt="Yii使用Captcha验证码的方法">이 글이 Yii 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.
위 내용은 관련 내용을 포함하여 Yii에서 Captcha 인증코드를 사용하는 방법을 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.