gpt4 book ai didi

Yii1.0 不同页面多个验证码的使用实现

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 31 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Yii1.0 不同页面多个验证码的使用实现由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

当业务A页面有验证码,且业务B页面也需要验证码。这个时候,如果A和B共用一个验证码,则会出现这种情况: A页面出现验证码,这个时候打开B页面验证码,再回到A页面输入验证码,即使验证码输入无误,也会验证不通过。因为A和B共用一个验证码,也就是验证码存储的session是一个,这样对用户体验很不好。 解决方法如下:

HTML代码 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
< html >
< head >
   < title >业务A的验证码页面</ title >
</ head >
< body >
   < img src = "" alt = "验证码" id = "imgValCode" >
</ body >
</ html >
  < script src = "jquery.js" ></ script >
   < script type = "text/javascript" >
   $.ajax({
     url: '/Captcha/A/refresh', //不同业务模块调用不同的url B业务调用/Captcha/B/refresh
     type: 'get',
     dataType: 'json',
     async: true,
     success:function(data) {
       if ( data.src ) {
         $('#imgValCode').attr('src',data.src);
       }
     }
   });
</ script >

PHP代码 。

?
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/**
  * yii1.0 验证码类
  * 多个验证码,方式业务A页面和业务B页面同时打开,共用一个验证码session,导致其中一个被失效的问题
  */
class CaptchaController extends CHttpModuleController
{
   /**
    * 验证码生成函数
    */
   public function actions()
   {
     return [
       //A业务验证码
       'A' => [
         'class' => 'application.components.MyCaptcha.MyCaptchaAction' ,
         'backColor' => 0xFFFFFF,
         'minLength' => 5,
         'maxLength' => 5,
         'offset' => 5,
         'testLimit' => 1,
         'width' => 100,
         'height' => 40,
         'isInterferingLine' => true, //是否启用干扰线
         'interferingLineNumber' => 8, //干扰线数量设置
         'foreColor' => '0x0c0c0e'
       ],
       //B业务验证码
       'B' => [
         'class' => 'application.components.MyCaptcha.MyCaptchaAction' ,
         'backColor' => 0xFFFFFF,
         'minLength' => 5,
         'maxLength' => 5,
         'offset' => 5,
         'testLimit' => 1,
         'width' => 100,
         'height' => 40,
         'isInterferingLine' => false, //是否启用干扰线
         'interferingLineNumber' => 8, //干扰线数量设置
         'foreColor' => '0x0c0c0e'
       ]
     ];
   }
 
   /**
    * 验证码验证函数
    * 在需要验证验证码的控制器中调用,传递businessId(业务类型id)作为区分不同验证码的id
    * 调用方式:
    * Yii::app()->runController('Captcha/actionVerifyCode',[ 'businessId' => 'A' ]);
    */
   public function actionVerifyCode( $businessId )
   {
     $code = Yii::app()->request->getPost( 'code' );        //接收用户输入的验证码
     if ( $businessId == 'A' ) {
       $vcode = $this ->createAction( 'A' )->getVerifyCode();   //获取A业务的验证码
     } else if ( $businessId == 'B' ) {
       $vcode = $this ->createAction( 'B' )->getVerifyCode();   //获取B业务的验证码
     }
     if ( empty ( $vcode ) || empty ( $code ) || $vcode != $code ) {  //验证用户输入验证码与验证码是否相等
       return false;    //验证不通过
     }
     return true;  //验证通过
   }
}
?>

到此这篇关于Yii1.0 不同页面多个验证码的使用实现的文章就介绍到这了,更多相关Yii1.0 多验证码内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://segmentfault.com/a/1190000021929919 。

最后此篇关于Yii1.0 不同页面多个验证码的使用实现的文章就讲到这里了,如果你想了解更多关于Yii1.0 不同页面多个验证码的使用实现的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com