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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值