Yii使用Captcha验证码的方法

2025-05-29 0 27

本文实例讲述了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'),

);

}

}

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

}

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

?

1

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

{

3. view

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

?

1

2

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

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

<img src="/wp-content/uploads/202505/29/18772.jpg" alt="">

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Yii使用Captcha验证码的方法 https://www.kuaiidc.com/99029.html

相关文章

发表评论
暂无评论