【问题标题】:Opencart, OC 1.5.1.3, captcha errorOpencart,OC 1.5.1.3,验证码错误
【发布时间】:2011-11-24 23:27:30
【问题描述】:

OC 1.5.1.3,验证码图像不会显示在这些页面上:

  1. 产品/评论部分
  2. 联系页面
  3. 通过访问此http://www.directmall.co.uk/index.php?route=information/contact/captcha(应生成图像的直接链接)

我看不到任何错误(Apache 日志/error.txt 文件)。我在语言文件中看不到任何空格 - 事实上,我已经重新下载了整个 EN 包以确保......

我怀疑依赖关系已损坏(即使我有 GD.. 肯定还有其他东西..);完全禁用缓存 - 需要帮助!

早在 2009 年,我就在论坛上发现了此类错误的痕迹,但似乎存在语言文件问题,这意味着空格痕迹比正常情况更早发送页眉 - 但我检查了大部分文件被认为参与其中,我已经清理了所有多余的空间 - 没有结果。

谢谢, 波格丹

【问题讨论】:

    标签: apache captcha opencart


    【解决方案1】:

    仅供参考,我遇到了同样的问题,这个解决方案(更改为 system\library\captcha.php)确实使验证码图像显示成功并且表单通过验证:

    function getCode(){
    $out = ob_get_contents();
    $out = str_replace(array("\n", "\r", "\t", " "), "", $this->code);
    ob_end_clean();
    
        return $out;
    }
    

    【讨论】:

    • 谢谢谢谢谢谢。 OC论坛里没有人知道答案。
    【解决方案2】:

    对于 OC 1.5.* 转到

    系统\库\captcha.php

    找到function getCode()将此函数替换为

    function getCode(){
    $code= ob_get_contents();
    $code= str_replace(array("\n", "\r", "\t", " "), "", $this->code);
    ob_end_clean()    return $code; }
    

    现在对于 OC 2.1。* 转到

    目录/控制器/验证码/基本验证码

    查找$this->session->data['captcha'] = substr(sha1(mt_rand()), 17, 6);

    在此之后放置以下代码

        $code= ob_get_contents();
        $code= str_replace(array("\n", "\r", "\t", " "), "",$this->session->data['captcha']);
        ob_end_clean();
        $this->session->data['captcha'] = $code;
    

    对于 OC 2.3.* 转到

    目录/控制器/扩展/captcha/basic-captcha.php 查找$this->session->data['captcha'] = substr(sha1(mt_rand()), 17, 6); 在此之后放置以下代码

        $code= ob_get_contents();
        $code= str_replace(array("\n", "\r", "\t", " "), "",$this->session->data['captcha']);
        ob_end_clean();
        $this->session->data['captcha'] = $code;
    

    很有帮助!

    【讨论】:

      【解决方案3】:

      在 Google Chrome 上执行view-source:http://www.directmall.co.uk/index.php?route=information/contact/captcha 显示图像内容的前面有一个空格。

      您可能在<?php 之前或?> 之后的代码中不小心输出了"\n"

      【讨论】:

      • 试过了:/system/library/captcha.php, /index.php, /catalog/language/english/english.php - 我明白你在说什么,这个问题在很多网站上都有讨论早在 2008/2009 年的论坛,但现在我想不出空间在哪里。 directmall.co.uk/index.php?route=information/contact/captcha 路径包含的包含少于所有其他路径,但我仍然看不到上述文件中的问题。可能存在字符集问题 - 我为上述设置了 UTF-8。非常感谢您的帮助,请多多指教。
      • 您应该检查您的 php 错误日志(如果已启用) - 这与 opencart 错误日志不同。那里应该有已经发送的标头的错误消息,以及输出开始的位置(行号和文件)
      • 没有错误 - 我知道这不太可能,但我看不到任何错误,我运行 E_ALL。 Plesk 10 从 Plesk 9 升级而来。
      【解决方案4】:

      你应该在你的getcode函数之后添加这段代码(库中的captcha.php)

      $out = ob_get_contents();
      $out = str_replace(array("\n", "\r", "\t", " "), "", $input);
      ob_end_clean();
      

      【讨论】:

      • 仍然没有结果.....我已经在“function getCode(){”和“return $this->code;”之间添加了这两行。我已经更改了“$this->code;”的返回值;也改为“$out”,我已经用“$this->code”更改了“$input”,但仍然没有产生所有可能的组合。
      【解决方案5】:

      只是为了澄清任何寻找这个的人。 系统/库/captcha.php

      更改函数第 11 行 getCode()

      到这里:

      function getCode(){
          //return $this->code;
          $out = ob_get_contents();
                  $out = str_replace(array("\n", "\r", "\t", " "), "", $input);
                  ob_end_clean();
      
                  return $out;
      }
      

      应该这样做。

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,我的特殊情况是,这就是解决方案。可能是在修复 product.php 时引入了一些空行,非常难以调试。无论如何,这段代码:

        $out = ob_get_contents();
        $out = str_replace(array("\n", "\r", "\t", " "), "", $input);
        ob_end_clean();
        
        return $out;
        

        确实修复了它,因为它清除了任何不应该存在的东西。

        希望它对任何人都有帮助。

        【讨论】:

          【解决方案7】:

          我最近遇到了这个问题,这个常见的解决方案(以前对我有用)不起作用:

          $out = ob_get_contents();
          $out = str_replace(array("\n", "\r", "\t", " "), "", $input);
          ob_end_clean();
          return $out;
          

          我注意到 /system/library/captcha.php 中的 showImage() 方法直接访问 $this->code 而不是使用它的 getter getCode()。这意味着它绕过了去除空格的功能。

          但是,像这样修改构造函数就可以了:

          function __construct() { 
              $this->code = substr(sha1(mt_rand()), 17, 6); 
              $this->code = str_replace(array("\n", "\r", "\t", " "), "", $this->code);
          }
          

          可以在此处找到更多信息和应用此修复的 vQmod 扩展: http://www.antropy.co.uk/blog/opencart-captcha-not-working-jfif/

          【讨论】:

            猜你喜欢
            • 2016-06-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-22
            • 2011-10-21
            • 1970-01-01
            • 1970-01-01
            • 2016-08-14
            • 1970-01-01
            相关资源
            最近更新 更多