Jump to content
Sign in to follow this  
Nemirov

[Решено] Ошибка google recaptcha при оформлении заказа без регистрации

Recommended Posts

Обнаружил проблему после подключения google recaptcha, при оформлении заказа без регистрации (либо при регистрации из корзины при оформлении заказа), после ввода 

Профиль & Платежная информация, и нажатия на кнопку "продолжить" вылетает ошибка, (скрин приложил),

в логе

2016-03-27 20:00:01 - PHP Notice: Undefined index: g-recaptcha-response in /var/www/u0171317/data/www/nemirov.net/catalog/controller/captcha/google_captcha.php on line 32

 

а вот и сам файл google_captcha.php

 

class ControllerCaptchaGoogleCaptcha extends Controller {
public function index($error = array()) {
$this->load->language('captcha/google_captcha');

$data['heading_title'] = $this->language->get('heading_title');

$data['entry_captcha'] = $this->language->get('entry_captcha');

$this->document->addScript('https://www.google.com/recaptcha/api.js');

if (isset($error['captcha'])) {
$data['error_captcha'] = $error['captcha'];
} else {
$data['error_captcha'] = '';
}

$data['site_key'] = $this->config->get('google_captcha_key');

$data['route'] = $this->request->get['route'];

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/captcha/google_captcha.tpl')) {
return $this->load->view($this->config->get('config_template') . '/template/captcha/google_captcha.tpl', $data);
} else {
return $this->load->view('default/template/captcha/google_captcha.tpl', $data);
}
}

public function validate() {
$this->load->language('captcha/google_captcha');

$recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);

$recaptcha = json_decode($recaptcha, true);

if (!$recaptcha['success']) {
return $this->language->get('error_captcha');
}
}
}

 

 

А вот собственно и ссылка

 

Если кто то сталкивался с такой ошибкой, просьба откликнуться

post-707859-0-39987800-1459098376_thumb.png

Edited by Nemirov

Share this post


Link to post
Share on other sites

Версия движка 2.1.0.2

Share this post


Link to post
Share on other sites

Том спасибо тебе снова огромное.

И собственно решение Tom уже опубликовал.

Share this post


Link to post
Share on other sites

Пока было всё в порядке с каптчей и тут сегодня случайно заметил, что кнопка каптчи (например на странице регистрации) вообще не показывается. Проверил настройки, везде включено (переключал на простую - работает).

Далее посмотрел в отладчике браузера и тут оба: "https://www.gstatic.com/recaptcha/api2/r20160425122911/recaptcha__ru.js net::ERR_BAD_SSL_CLIENT_AUTH_CERT" - не загружает скриптик, почему? И в логах слова есть ошибки, что не определён индекс "g-recaptcha-response". Что делать? OC 2.2.0.0

Благодарю заранее.

Share this post


Link to post
Share on other sites

Столкнулся с аналогичной фигней = руганью на неопределенную переменную касательно рекаптчи

 

И нашел на форуме Опенкарта что в коде есть опечатка, в слове gcapcha пропущена буква t

 

ПРИЧЕМ ДВАЖДЫ

 

Идем в catalog\controller\extension\captcha\google_captcha.php

 

Находим там такую строчку: (у меня она была 24й)

 

if (empty($this->session->data['gcapcha'])) {

 

и меняем на правильное написание переменной, с буквой t - вот так:

 

if (empty($this->session->data['gcaptcha'])) {

 

И еще ниже (у меня в 32й строчке), тоже была пропущена буква t

 

$this->session->data['gcaptcha']    = true;

 

Надеюсь что кому-то тоже поможет.

 

Edited by VadimOd
добавил про 2ю опечатку
  • +1 7

Share this post


Link to post
Share on other sites
В 25.09.2017 в 16:37, VadimOd сказал:

Столкнулся с аналогичной фигней = руганью на неопределенную переменную касательно рекаптчи

 

И нашел на форуме Опенкарта что в коде есть опечатка, в слове gcapcha пропущена буква t

 

ПРИЧЕМ ДВАЖДЫ

 

Идем в catalog\controller\extension\captcha\google_captcha.php

 

Находим там такую строчку: (у меня она была 24й)

 

if (empty($this->session->data['gcapcha'])) {

 

и меняем на правильное написание переменной, с буквой t - вот так:

 

if (empty($this->session->data['gcaptcha'])) {

 

И еще ниже (у меня в 32й строчке), тоже была пропущена буква t

 

$this->session->data['gcaptcha']    = true;

 

Надеюсь что кому-то тоже поможет.

 

Было бы не плохо после

    public function validate() {
		if (empty($this->session->data['gcaptcha'])) {
			$this->load->language('extension/captcha/google_captcha');

добавить

			if (!isset($this->request->post['g-recaptcha-response'])) {
				return $this->language->get('error_captcha');
			}

общая картина получится такой (ocStore 2.3.0.2.3)

<?php
class ControllerExtensionCaptchaGoogleCaptcha extends Controller {
    public function index($error = array()) {
        $this->load->language('extension/captcha/google_captcha');

		$data['text_captcha'] = $this->language->get('text_captcha');

		$data['entry_captcha'] = $this->language->get('entry_captcha');

        if (isset($error['captcha'])) {
			$data['error_captcha'] = $error['captcha'];
		} else {
			$data['error_captcha'] = '';
		}

		$data['site_key'] = $this->config->get('google_captcha_key');

		$data['lang'] = $this->config->get('config_language');

        $data['route'] = $this->request->get['route']; 

		return $this->load->view('extension/captcha/google_captcha', $data);
    }

    public function validate() {
		if (empty($this->session->data['gcaptcha'])) {
			$this->load->language('extension/captcha/google_captcha');

			if (!isset($this->request->post['g-recaptcha-response'])) {
				return $this->language->get('error_captcha');
			}

			$recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);
	
			$recaptcha = json_decode($recaptcha, true);
	
			if ($recaptcha['success']) {
				$this->session->data['gcaptcha']	= true;
			} else {
				return $this->language->get('error_captcha');
			}
		}
    }
}

 

Share this post


Link to post
Share on other sites

del 

Edited by isort17

Share this post


Link to post
Share on other sites
В 03.01.2019 в 15:29, Elenaruzana сказал:

общая картина получится такой (ocStore 2.3.0.2.3)

 
Elenaruzana,
Скажите, вот это корректно? я могу весь текс вставить вместо моего ошибочного?
у меня в  журнале - одна повторяющаяся ошибка - ругает 29 строку

Edited by isort17

Share this post


Link to post
Share on other sites
В 21.02.2019 в 18:04, isort17 сказал:

 
Elenaruzana,
Скажите, вот это корректно? я могу весь текс вставить вместо моего ошибочного?
у меня в  журнале - одна повторяющаяся ошибка - ругает 29 строку

Да, всё верно. Но только это решит проблему на сборке ocStore 2.3.0.2.3, на других версиях не проверялось

Share this post


Link to post
Share on other sites
8 часов назад, Elenaruzana сказал:

Да, всё верно.


Спасибо! Ради проверки загрузил Ваш текст капчи - больше ошибок не появлялось

Share this post


Link to post
Share on other sites
Posted (edited)

Приветствую. У меня так же постоянно такая ошибка

PHP Notice:  Undefined index: g-recaptcha-response in /catalog/controller/extension/captcha/google_captcha.php on line 27

Как решить для версии: OpenCart Version 2.3.0.2?

Так же как писал VadimOd была пропущена буква, поменял, но все равно наблюдаю ошибку. 

 В решении Tomа по пути /catalog/view/theme/default/template/ и default и в шаблоне нет папки captcha/google_captcha.tpl

 

Вот код

Спойлер

<?php
class ControllerExtensionCaptchaGoogleCaptcha extends Controller {
    public function index($error = array()) {
        $this->load->language('extension/captcha/google_captcha');

        $data['text_captcha'] = $this->language->get('text_captcha');

        $data['entry_captcha'] = $this->language->get('entry_captcha');

        if (isset($error['captcha'])) {
            $data['error_captcha'] = $error['captcha'];
        } else {
            $data['error_captcha'] = '';
        }

        $data['site_key'] = $this->config->get('google_captcha_key');

        $data['route'] = $this->request->get['route']; 

        return $this->load->view('extension/captcha/google_captcha', $data);
    }

    public function validate() {
        if (empty($this->session->data['gcaptcha'])) {
            $this->load->language('extension/captcha/google_captcha');

            $recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($this->config->get('google_captcha_secret')) . '&response=' . $this->request->post['g-recaptcha-response'] . '&remoteip=' . $this->request->server['REMOTE_ADDR']);
    
            $recaptcha = json_decode($recaptcha, true);
    
            if ($recaptcha['success']) {
                $this->session->data['gcapcha']    = true;
            } else {
                return $this->language->get('error_captcha');
            }
        }
    }
}
 

 

Edited by Deelane

Share this post


Link to post
Share on other sites

Сборка 2.3.0.2 С исходным видом файла заказ могут сделать только незарегистрированные пользователи. У зарег.пользователей на шаге выбора способа доставки не пускает дальше, не видит выбранного способа. Добавляю пропущенные буквы - всё ок с заказами, капча есть где надо, нажимается, но можно и не жать, и так пропускает)))))

В чём прикол, может кто подскажет???? В журнале ошибок нет (посте добавления букв)...

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

Sign in to follow this  

  • Similar Content

    • By ashap
      Admin Recaptcha для oc2.3
      Позволяет усилить защиту админ панели от перебора паролей роботами.


      Версия для магазинов 1.5, 2.0, 2.1 по ссылке
       
      Смотрите также другие модули по ссылке
    • By ashap
      750.00 руб
      Скачать/Купить дополнение


      Recaptcha для админ панели (oc 2.3)
      Admin Recaptcha для oc2.3
      Позволяет усилить защиту админ панели от перебора паролей роботами.


      Версия для магазинов 1.5, 2.0, 2.1 по ссылке
       
      Смотрите также другие модули по ссылке
      Добавил ashap Добавлено 14.10.2017 Категория Модули Системные требования Сайт разработчика https://store.pe-art.ru/ Старая цена Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3 Обращение к серверу разработчика  
    • By ashap
      350.00 руб
      Скачать/Купить дополнение


      Recaptcha для админ панели
      Admin Recaptcha
      Позволяет усилить защиту админ панели от перебора паролей роботами.



      Версия для магазинов 2.3 по ссылке
       
      Смотрите также другие модули по ссылке
      Добавил ashap Добавлено 01.09.2015 Категория Модули Системные требования Сайт разработчика https://store.pe-art.ru/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1 OpenCart.Pro, ocShop Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика  
    • By ironzorin2
      Мой сайт DOSят помаленьку: с десяток запросов в минуту с разных адресов. 
      Возможно ли встроить в форму поиска reCAPTCHA?
      В результате на хостинге повышается нагрузка на CPU. 
    • By Dragon
      Скачать/Купить дополнение


      Google reCAPTCHA v2 для ocStore 1.5.5x (Мануал + vqMod)
      Модуль меняет стандартную устаревшую капчу в отзывах на современную reCaptcha v2 от Google.
      Достаточно поставить галочку "Я не робот" чтобы отправить отзыв. Если же гугл сомневается в том что вы человек - придется выбрать пару картинок.
      Начиная с OpenCart 2.0.2 Google reCaptcha установлена как каптча по-умолчанию. Данный модуль - адаптация версии 2.0 на 1.5.5x.
      Модуль тестировался на версии 1.5.5.1.2 на стандартном шаблоне.
      В архиве мануал для ручной установки на любой шаблон.
      Если была установлена предыдущая версия через vqmod, то необходимо удалить vqmod_google_recaptcha2.xml и залить vqmod_google_recaptcha2_full.xml
      Для работы модуля необходимо добавить домен на сайте https://www.google.com/recaptcha/intro/index.html
      и указать полученные site key и secret key в Система -> Настройки -> Сервер -> Google reCaptcha
      Добавил Dragon Добавлено 16.07.2015 Категория Прочее  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.