OC 1.5.1.3,Captcha图像不显示在这些页面上:
我看不到任何错误(Apache logs / error.txt文件)。我在语言文件中看不到任何空格 - 实际上我已经重新加载了整个EN包,只是为了确保..
我怀疑依赖性破坏了(即使我有GD ......还有其他的东西......);禁用完全缓存 - 需要帮助!
早在2009年我在论坛上发现了这类错误的痕迹,但似乎存在语言文件问题,这意味着空间的痕迹比正常情况更早地发送页面标题 - 但我检查了大部分文件我我认为参与其中,我已经清理了所有额外的空间 - 没有结果。
谢谢, 波格丹
答案 0 :(得分:14)
仅供参考我有同样的问题,这个解决方案(更改为system \ library \ captcha.php) 使验证码图像成功显示,表单通过验证:
function getCode(){
$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $this->code);
ob_end_clean();
return $out;
}
答案 1 :(得分: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.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;
它很有帮助!
答案 2 :(得分:1)
在Google Chrome上执行view-source:http://www.directmall.co.uk/index.php?route=information/contact/captcha
向我展示了图片内容前面有一个空格。
您可能在"\n"
之前或<?php
之后的代码中的某处意外输出了?>
,
答案 3 :(得分:1)
你应该在你的getcode函数之后添加这段代码(库中的captcha.php)
$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();
答案 4 :(得分:1)
只是为了澄清任何寻找此事的人。 系统/库/ 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;
}
应该这样做。
答案 5 :(得分:0)
我有同样的问题,我的具体情况,这是解决方案。可能在修复product.php时会引入一些空白行,这些行很难调试。无论如何这个代码:
$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();
return $out;
确实修复了它,因为它清除了任何不应该存在的东西。
希望它可以帮助任何人。
答案 6 :(得分:0)
我最近遇到过这个问题,这个常见的解决方案(以前对我有用)不起作用:
$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();
return $out;
我注意到/system/library/captcha.php中的showImage()方法直接访问$ this-&gt;代码而不是使用其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/