Блог Сергея Арсентьева

Создание и продвижение сайтов с нуля.
Только реальные способы заработка в сети.
Проверено на личном опыте.

В Opencart не работает и не показывается каптча в товаре

При переносе магазина на новый хостинг у меня почему-то перестала работать каптча в отзывах магазина на Opencart CMS. Причем на оригинальном магазине все работало (файлы не менялись), а на новом уже не показывались цифры, которые нужно было вводить. Пришлось гуглить и решать эту проблему.

Не будучи программистом обнаружить корень зла тяжело, поэтому я решил просто найти в поиске владельцев магазинов на CMS Opencart (я использую OcStore 1.5.5.1.2), у которых как и у меня, перестала показываться каптча и пробовать их способы решения этой задачи.

Сейчас я перечислю все, что нашел в сети, а вы можете перебрать их все по очереди. Один из них мне в конце концов помог и каптча стала работать нормально.

Не работает каптча

Путь к изображению каптчи

Итак, первое что нужно сделать, проверить путь, который ведет к картинке каптчи в отзывах товарах.

Путь к картинке прописывается в файле /catalog/view/theme/default/template/product/product.tpl и выглядит обычно вот так: img src="index.php?route=product/product/captcha"

Естественно, для правок вам понадобится доступ к FTP (что это такое)
На что правим?

Мне помогло исправление на img src="index.php?route=information/contact/captcha"

Кроме того, вы можете попробовать указать прямой путь к сайту, например, img src="https://moytop.com/index.php?route=information/contact/captcha", где вместо moytop.com - адрес вашего сайта. И наоборот, если был указан прямой путь с доменом сайта - укажите относительный путь без домена сайта.

Редактирование файла каптчи

Если манипуляции с путями не помогли, попробуйте проверить, а на месте ли сам файл, который отвечает за правильную работу каптчи.

Он находится вот тут: /system/library/captcha.php

Если он у вас отсутствует или отличается по размеру от оригинала из соответствующего дистрибутива (или исходной копии сайта) - замените его, предварительно сделав бекап текущего файла.

После каждой манипуляции проверяйте каптчу - не появилась ли она на странице товара?

Если не появляется попробуйте внести вот такие изменения в файл captcha.php:

1Найти часть кода:

function __construct() {
$this->code = substr(sha1(mt_rand()), 17, 6);
}

2Заменить на такой вариант:

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

3Если не поможет, то на такой вариант:

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

 

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

Поменять код header('Content-type: image/jpeg'); на header('Content-type: image/png'); а чуть ниже: imagejpeg($image); на imagepng($image);

Не забудьте вернуть все на исходную, если данная операция не помогла и попробуйте еще следующий пункт.

Правильные кодировки в UTF-8

При редактировании файлов php важно их сохранять в формате UTF-8 (там есть вариант с BOM или простой/без BOM - выбирайте именно простой, без BOM).

Поэтому попробуйте открыть и заново сохранить в UTF-8 без BOM следующие файлы:

  • /system/library/response.php
  • /system/library/captcha.php
  • /catalog/view/theme/default/template/product/product.tpl

Я использую редактор EditPlus (ссылку на него уже давал выше в статье про FTP, то есть скачать EditPlus можно внизу вот это страницы).

Удаление кодов сервисов

Если каптча перестала показываться буквально недавно, вспомните - может вы добавляли коды соцсетей, Google аналитики, Яндекс метрики, Live Chat и т.п. сервисы.

Уберите все коды и проверьте - каптча показалась?

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

Попробуйте эти рекомендации, если какая-то из них сработала, порекомендуйте статью в соцсетях или проголосуйте звездочкой в рейтинге, спасибо!

Ну а если не хотите заморачиваться со всеми этими исправлениями — покупайте готовый магазин Opencart у меня, там уже все установлено и настроено, скидки участникам блога гарантированны!

Автор блога
“Измени свои привычки, и изменится твоя жизнь..”
Специалист по созданию и продвижению сайтов (SEO и реклама), фрилансер с многолетним опытом.
Статистика блога
  • Всего материалов на сайте: 179
  • Активных комментариев: 2 445
  • Работает онлайн: 4.9 года
  • Читателей за это время: 1 386 391

Было интересно - жми на звезды:



Комментарии на блоге
Комментариев | (5)
  • Александр
    Александр

    Огромное спасибо автору. Долга мучался с этой проблемой. Помог первый вариант замены кода капчи!

    Комментировать
  • Георгий
    Георгий

    Первый вариант замены кода капчи помог! Спасибо, очень полезная статья!

    Комментировать
  • Ирина
    Ирина

    А у меня после установки магазина капча ен показывалась в контактах, и вариант номер 1 помог. А потом сайт переехал на другой хостинг - и капча снова пропала. Тогда помог анти-вариант номер 1, т..е. возврат к тому, что было до.
    АТк и осталось загадкой, почему одному хостеру надо одно, другому другое, но автору спасибо - помог дважды.

    Комментировать
  • ыва
    ыва

    Помог вариант под цифрой 3. Спасибо! :yes:

    Комментировать
  • Александр
    Александр

    Спасибо! Выручили, первый вариант помог!

    Комментировать
Добавить свой комментарий
Подписка на бесплатные уроки
Подписаться!
Подробнее в Установки и настройки
Применить Опенкарт
Установить кнопку «Применить» в Opencart или OcStore

Когда я только начинал работать с магазином на Opencart, то был разочарован, что в ней нет кнопки «Применить», которая есть...

готовый магазин opencart
Готовый интернет-магазин на Opencart

Я предлагаю вам приобрести уже готовый интернет-магазин на базе популярной русскоязычной Opencart CMS (OcStore). Магазин полностью адаптируется под клиента и...

Закрыть