• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Yii1.0 不同页面多个验证码的使用实现

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

    HTML代码

    !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代码

    ?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 多验证码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Yii2框架实现登陆添加验证码功能示例
    • Yii2 如何在modules中添加验证码的方法
    • Yii2下点击验证码的切换实例代码
    • Yii2简单实现给表单添加验证码的方法
    • Yii2增加验证码步骤详解
    • yii2中添加验证码的实现方法
    • Yii 2.0自带的验证码使用经验分享
    • Yii输入正确验证码却验证失败的解决方法
    • Yii框架实现的验证码、登录及退出功能示例
    • Yii使用Captcha验证码的方法
    • yii实现创建验证码实例解析
    • YII2框架中验证码的简单使用方法示例
    上一篇:详解laravel中blade模板带条件分页
    下一篇:PHP实现微信小程序在线支付功能(代码实例)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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