Heim > Backend-Entwicklung > PHP-Tutorial > yii 验证码的使用和验证过程,yii验证码验证过程_PHP教程

yii 验证码的使用和验证过程,yii验证码验证过程_PHP教程

WBOY
Freigeben: 2016-07-12 09:04:45
Original
864 Leute haben es durchsucht

yii 验证码的使用和验证过程,yii验证码验证过程

如果要实现这个过程的话,需要几个步骤

第一步就是controller的操作

在要操作的控制器中添加如下代码:

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('*'),
),
);
}
Nach dem Login kopieren

  

第二步就是view的操作

在要显示验证码的地方添加如下代码:

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


第三步就是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;
}	
}
}
Nach dem Login kopieren

  

第四步,实现验证的过程,那么具体的查看我自己的写的一个方式,在第三部已经写好了
validateVerifyCode就是啦,可以在controller里面调用

我的调用如下:

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));
}
Nach dem Login kopieren

  

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1072009.htmlTechArticleyii 验证码的使用和验证过程,yii验证码验证过程 如果要实现这个过程的话,需要几个步骤 第一步就是controller的操作 在要操作的控制器中...
Verwandte Etiketten:
yii
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage