首页 > 开发 > PHP > 正文

Yii使用Captcha验证码的方法

2024-05-04 23:41:35
字体:
来源:转载
供稿:网友
这篇文章主要介绍了Yii使用Captcha验证码的方法,结合实例形式分析了Yii使用Captcha验证码的MVC三层具体实现技巧,需要的朋友可以参考下
 

本文实例讲述了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)); ?><img src="http://www.XXXX.net/uploads/123456.jpg" alt="">

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



注:相关教程知识阅读请移步到PHP教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表