Opencart, OC 1.5.1.3, ошибка с проверкой - PullRequest
4 голосов
/ 25 ноября 2011

OC 1.5.1.3, изображение Captcha не отображается ни на одной из этих страниц:

  1. раздел продукта / обзора
  2. контактная страница
  3. при доступеthis http://www.directmall.co.uk/index.php?route=information/contact/captcha (прямая ссылка, которая должна генерировать изображение)

Я не вижу никаких ошибок (файл Apache logs / error.txt).Я не вижу пробелов в языковых файлах - фактически я перезагружал весь пакет EN просто для того, чтобы убедиться ...

Я подозреваю, что зависимость нарушена (даже если у меня есть GD .. должен бытьчто-то другое..);полностью отключено кэширование - нужна помощь!

Еще в 2009 году я обнаружил следы таких ошибок на форумах, но, похоже, возникла проблема с языковым файлом, то есть следы пробелов отправляли заголовки страниц раньше, чем обычно -но я проверил большинство файлов, которые, как я думал, были задействованы, и я очистил все лишние пробелы - безрезультатно.

Спасибо, Богдан

Ответы [ 7 ]

14 голосов
/ 11 декабря 2012

FYI У меня была такая же проблема и это решение (смените system \ library \ captcha.php) did заставили изображение капчи успешно отображаться и форма прошла проверку:

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

    return $out;
}
2 голосов
/ 16 мая 2017

Для ОС 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. * Перейти к

Каталог / контроллер / CAPTCHA, / базовый код

Найти $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. * Перейти к

Каталог / контроллер / Extension / CAPTCHA, / базовый 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;

Это полезно!

1 голос
/ 05 июля 2013

Просто чтобы уточнить, кто ищет это. система / библиотека / 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;
}

Это должно сделать это.

1 голос
/ 30 января 2012

Вы должны добавить этот код после функции getcode (captcha.php в библиотеке)

$out = ob_get_contents();
$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();
1 голос
/ 25 ноября 2011

Выполнение view-source:http://www.directmall.co.uk/index.php?route=information/contact/captcha в Google Chrome показало мне, что перед содержимым изображения есть пробел.

Возможно, вы случайно вывели "\n" где-то в своем коде до <?php или после ?>,

0 голосов
/ 26 ноября 2014

Я недавно столкнулся с этой проблемой, и это общее решение (которое работало для меня раньше) не сработало:

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

Я заметил, что метод showImage () в /system/library/captcha.php непосредственно обращается к коду $ this->, а не к его 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/

0 голосов
/ 03 июля 2013

У меня была такая же проблема, и в моем конкретном случае это было решением. Вероятно, при исправлении product.php были введены некоторые пустые строки, которые крайне сложно отладить. В любом случае этот код:

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

return $out;

действительно исправил это, так как он очищает все, что не должно быть там.

надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...