При переносе магазина на новый хостинг у меня почему-то перестала работать каптча в отзывах магазина на 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
Я использую редактор Notepad++ (ссылку на него уже давал выше в статье про FTP).
Удаление кодов сервисов
- Если каптча перестала показываться буквально недавно, вспомните - может вы добавляли коды соцсетей, Google аналитики, Яндекс метрики, Live Chat и т.п. сервисы.
- Уберите все коды и проверьте - каптча показалась?
- Если да, то возвращайте коды по одному и когда найдете тот, который влияет на отображение каптчи в вашем магазине, то отключите именно его.
Попробуйте эти рекомендации, если какая-то из них сработала, порекомендуйте статью в соцсетях или проголосуйте звездочкой в рейтинге, спасибо!
Ну а если не хотите заморачиваться со всеми этими исправлениями — покупайте готовый магазин Opencart у меня, там уже все установлено и настроено.
У мена OCStore 1.5.4.1 помогло вот это: img src="index.php?route=information/contact/captcha"
Спасибо! Выручили, первый вариант помог!
Помог вариант под цифрой 3. Спасибо!
А у меня после установки магазина капча ен показывалась в контактах, и вариант номер 1 помог. А потом сайт переехал на другой хостинг - и капча снова пропала. Тогда помог анти-вариант номер 1, т..е. возврат к тому, что было до.
АТк и осталось загадкой, почему одному хостеру надо одно, другому другое, но автору спасибо - помог дважды.
Первый вариант замены кода капчи помог! Спасибо, очень полезная статья!
Огромное спасибо автору. Долга мучался с этой проблемой. Помог первый вариант замены кода капчи!