Home >Backend Development >PHP Tutorial >The use and verification process of yii verification code, yii verification code verification process_PHP tutorial

The use and verification process of yii verification code, yii verification code verification process_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 09:04:45862browse

The use and verification process of yii verification code, yii verification code verification process

If you want to implement this process, several steps are needed

The first step is to operate the controller

Add the following code in the controller you want to operate:

public function actions(){
return array( 
// captcha action renders the CAPTCHA image displayed on the contact page
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=>0xFFFFFF, 
'maxLength'=>'8', // 最多生成几个字符
'minLength'=>'7', // 最少生成几个字符
'height'=>'40',
'width'=>'230',
), 
); 

}

public function accessRules(){
return array(
array('allow',
'actions'=>array('captcha'),
'users'=>array('*'),
),
);
}

 

The second step is to operate the view

Add the following code where you want to display the verification code:

<div class="control-group">
<?php $this->widget('CCaptcha',array(
'showRefreshButton'=>true,
'clickableImage'=>false,
'buttonLabel'=>'刷新验证码',
'imageOptions'=>array(
'alt'=>'点击换图',
'title'=>'点击换图',
'style'=>'cursor:pointer',
'padding'=>'10')
)); ?>
</div>


The third step is the operation of LoginForm

<?php

/**
* LoginForm class.
* LoginForm is the data structure for keeping
* user login form data. It is used by the 'login' action of 'SiteController'.
*/
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe;
public $verifyCode;
private $_identity;

/**
* Declares the validation rules.
* The rules state that username and password are required,
* and password needs to be authenticated.
*/
public function rules(){
return array(
// username and password are required
//	array('username, password', 'required'),
array('username','required','message'=>'登录帐号不能为空'),
array('password','required','message'=>'密码不能为空'),
array('verifyCode','required','message'=>'验证码不能为空'),
array('verifyCode','captcha', 'on'=>'login','allowEmpty'=>!Yii::app()->admin->isGuest),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate'),
);
}

/**
* Declares attribute labels.
*/
public function attributeLabels()
{
return array(
'rememberMe'=>'下次记住我',
'verifyCode' =>'验证码'
);
}

/**
* Authenticates the password.
* This is the 'authenticate' validator as declared in rules().
*/
public function authenticate($attribute,$params)
{
if(!$this->hasErrors())
{
$this->_identity=new UserIdentity($this->username,$this->password);
if(!$this->_identity->authenticate())
$this->addError('password','帐号或密码错误.');
}
}

public function validateVerifyCode($verifyCode){
if(strtolower($this->verifyCode) === strtolower($verifyCode)){
return true;
}else{
$this->addError('verifyCode','验证码错误.');
}
}


/**
* Logs in the user using the given username and password in the model.
* @return boolean whether login is successful
*/
public function login(){
if($this->_identity===null){
$this->_identity=new UserIdentity($this->username,$this->password);
$this->_identity->authenticate();
}
if($this->_identity->errorCode===UserIdentity::ERROR_NONE){
$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
Yii::app()->user->login($this->_identity,$duration);
return true;
}else{
return false;
}	
}
}

 

The fourth step is to implement the verification process. Let’s check my own method specifically. It has been written in the third part.
ValidateVerifyCode is just it. It can be called in the controller

My call is as follows:

public function actionLogin(){
$model=new LoginForm;
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form'){
echo CActiveForm::validate($model);
Yii::app()->end();
}

if(isset($_POST['LoginForm'])){
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && 
$model->validateVerifyCode($this->createAction('captcha')->getVerifyCode()) && 
$model->login()){
$this->redirect(CController::createUrl('default/index'));
}

}
$this->render('login',array('model'=>$model));
}

 

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1072009.htmlTechArticleyii verification code usage and verification process, yii verification code verification process If you want to implement this process, you need several The first step is to operate the controller in the controller to be operated...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn