The example in this article describes the method of using Captcha verification code in Yii. Share it with everyone for your reference, as follows:
For detailed code, please refer to: yii's own sample code post project, which has a contact form that uses the verification code.
1. Model:
Add the verification code to UserLogin An attribute:
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'), ); } }
2. Controller
Add the mapping action CCaptchaAction to the LoginController controller
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); }
Before verifying the username and password, check the verification code:
if($this->createAction('captcha')->validate($model->verifyCode, false)) {
3. view
In the view Display the verification code image and input box
<?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验证码的方法">
I hope this article will be helpful to everyone’s PHP program design based on the Yii framework.
The above introduces the method of using Captcha verification code in Yii, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.