900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php中captcha action Yii使用Captcha验证码的方法

php中captcha action Yii使用Captcha验证码的方法

时间:2021-10-22 19:25:27

相关推荐

php中captcha action Yii使用Captcha验证码的方法

本文实例讲述了Yii使用Captcha验证码的方法。分享给大家供大家参考,具体如下:

详细代码可参考:yii自带的示例代码post项目,里面有一个contact表单用到了验证码.

1. Model:

将验证码加入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'),

);

}

}

2. Controller

在LoginController控制器加入映射动作CCaptchaAction

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. view

在视图中显示验证码图片,输入框

<?php $this->widget('CCaptcha'); ?>

<?php echo CHtml::activeTextField($model,'verifyCode',array('tabindex'=>1)); ?>

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。