Maison > développement back-end > tutoriel php > Yii使用Captcha验证码的方法

Yii使用Captcha验证码的方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-07-29 09:08:42
original
957 Les gens l'ont consulté

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

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

1. Model:

将验证码加入UserLogin的一个属性:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

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'),

  );

 }

}

Copier après la connexion

2. Controller

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

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);

}

Copier après la connexion

在验证用户名密码前,检查验证码:

1

2

if($this->createAction('captcha')->validate($model->verifyCode, false))

{

Copier après la connexion

3. view

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

1

2

3

widget('CCaptcha'); ?>

  1)); ?>

<img src="http://www.XXXX.net/uploads/123456.jpg" alt="Yii使用Captcha验证码的方法">

Copier après la connexion

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

以上就介绍了Yii使用Captcha验证码的方法,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal