Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Ошибка 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

Змінено користувачем Nemirov
Надіслати
Поділитися на інших сайтах


  • 1 month later...

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

Далее посмотрел в отладчике браузера и тут оба: "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

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

Надіслати
Поділитися на інших сайтах


  • 1 year later...

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

 

И нашел на форуме Опенкарта что в коде есть опечатка, в слове 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;

 

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

 

Змінено користувачем VadimOd
добавил про 2ю опечатку
  • +1 7
Надіслати
Поділитися на інших сайтах


  • 1 year later...
  • 4 weeks later...
В 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');
			}
		}
    }
}

 

Надіслати
Поділитися на інших сайтах


  • 1 month later...
В 03.01.2019 в 15:29, Elenaruzana сказал:

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

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

Змінено користувачем isort17
Надіслати
Поділитися на інших сайтах


В 21.02.2019 в 18:04, isort17 сказал:

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

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

Надіслати
Поділитися на інших сайтах


  • 5 months later...

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

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');
            }
        }
    }
}
 

 

Змінено користувачем Deelane
Надіслати
Поділитися на інших сайтах


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

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.