COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

капча


Recommended Posts

все версии 2.х, включая оригинальный опенкарт

 

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

Gz0OPap1StmIo8Eram7GKGIBHF9eRA.png

решения 2:

1. на примере страницы контактов

catalog/controller/information/contact.php

после 

		$this->document->setTitle($this->language->get('heading_title'));		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {			...		}

еще раз загрузить языковые переменные и переустановить тайтл (при этом до блока с обработкой POST-данных и валидации строку $this->document->setTitle... можно убрать)

		$this->load->language('information/contact');		$this->document->setTitle($this->language->get('heading_title'));

2. вырезать к бесам в языковых файлах

catalog/language/*/captcha/*.php

// Heading$_['heading_title'] = '...';
Ссылка на комментарий
Поделиться на других сайтах

Удалил в языковых файлах 


 


// Heading


$_['heading_title'] = 'Капча';


 


В файле catalog/controller/information/contact.php , в блоке (строка 12-35)


 


public function index() {

$this->load->language('information/contact');

 

$this->document->setTitle($this->language->get('heading_title'));   --------------удалил

 

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {

$mail = new Mail();

$mail->protocol = $this->config->get('config_mail_protocol');

$mail->parameter = $this->config->get('config_mail_parameter');

$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');

$mail->smtp_username = $this->config->get('config_mail_smtp_username');

$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');

$mail->smtp_port = $this->config->get('config_mail_smtp_port');

$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

 

$mail->setTo($this->config->get('config_email'));

$mail->setFrom($this->request->post['email']);

$mail->setSender(html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8'));

$mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));

$mail->setText($this->request->post['enquiry']);

$mail->send();

 

$this->response->redirect($this->url->link('information/contact/success'));

 


}

 

$this->load->language('information/contact');

        $this->document->setTitle($this->language->get('heading_title'));      --------------- добавил


 


После всего этого слово "Капча" пропало, но появилось другое :)  Что не так делаю ?


beb485051d8b.jpg


Ссылка на комментарий
Поделиться на других сайтах

во-первых, варианты на то и варианты, что либо либо

а во-вторых - кэш

ничего не понял :)

как мне исправить что бы было правильно ? я написал что изменил, но после этого стало появляться "Captcha"

 

зы хотя не совсем понимаю - а что там должно появляться когда все правильно ?

Ссылка на комментарий
Поделиться на других сайтах

если идти по первому решению, то языковые файлы менять не надо вовсе (а после изменения контроллера сбросить кэш модификаторов, если хотя бы один из них кэширует этот файл)
если идти по второму - то надо, притом во всех языках

catalog/language/*/captcha/*.php


когда все правильно, в крошках и в заголовке будет оригинальное название страницы, в данном случае, это "Связаться с нами"

Ссылка на комментарий
Поделиться на других сайтах

Такое можно даже пулреквестом отправить на opencart, только вот валидацию убирать не надо.

отправил

https://github.com/opencart/opencart/pull/3639

Ссылка на комментарий
Поделиться на других сайтах

если идти по первому решению, то языковые файлы менять не надо вовсе (а после изменения контроллера сбросить кэш модификаторов, если хотя бы один из них кэширует этот файл)

если идти по второму - то надо, притом во всех языках

когда все правильно, в крошках и в заголовке будет оригинальное название страницы, в данном случае, это "Связаться с нами"

оффтоп конечно, то есть если в заголовке после ошибочного ввода указывается не "Связаться с нами" а "Проверьте форму" ничего страшного не происходит?)

или получается что происходит переход не на ту страницу ? 

Не понимаю если честно что не так.

Ссылка на комментарий
Поделиться на других сайтах

нет, страница та же, просто заголовок страницы заменяется на заголовок из языкового файла капчи (и крошки на этой странице, мета тайтл не заменяется)


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


 


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


 


но если подходить педантично и от этой ошибки не спится, то, конечно, поправить надо


то есть по сути надо только одну строку добавить в каждый из файлов, что и куда, можно посмотреть здесь


 


https://github.com/savage4pro/opencart/commit/15b8f9041843c6959ddbc79361bad3246577db85


 


вероятно, когда-нибудь товарищ https://github.com/danielkerrпридумает, как это пофиксить красивей, и внесет исправления в ядро, но пока так


Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу