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

Кэшируется валидация гугл капчи Google reCAPTCHA


Recommended Posts

Здравствуйте. У меня есть сайт на котором имеется форма обратной связи с капчей гугл - Google reCAPTCHA. Все поля, в том числе и сама капча - валидируемые.  Проблема заключается в том, что валидация капчи кэшируется после оправки формы, и при попытке отправить форму еще раз, капча больше не валидируется, и форму можно отправить без участия самой капчи. Но после чистки кэша браузера, капча вновь становиться валидируемой. Подскажите пож, в чем примерно может быть проблема? Валидация не сторонняя.

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


2 часа назад, max_max_max сказал:

Здравствуйте. У меня есть сайт на котором имеется форма обратной связи с капчей гугл - Google reCAPTCHA. Все поля, в том числе и сама капча - валидируемые.  Проблема заключается в том, что валидация капчи кэшируется после оправки формы, и при попытке отправить форму еще раз, капча больше не валидируется, и форму можно отправить без участия самой капчи. Но после чистки кэша браузера, капча вновь становиться валидируемой. Подскажите пож, в чем примерно может быть проблема? Валидация не сторонняя.

Как-то вроде встречал, что она валидируется раз, потом гугл запоминает и если вы хоть раз ответили верно - не выводит капчу какое-то время, так как пользователь проверен. Что не так?

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

Хм... Да, возможно вы правы! Нет смысла каждый раз проверять пользователя на робота. Но опять же, на других сайтах наших клиентов (на цмс joomla или wp) данная капча гугл валидируется при каждой отправке формы. Почему так? Просто клиент хочет, что бы была постоянная валидация капчи.

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


Google reCAPTCHA использует cookies для сохранения состояния валидации. И не делает повторную валидацию, если она уже пройдена, чтобы нагрузку на гугловские сайты снизить. 

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


4 часа назад, max_max_max сказал:

Проблема заключается в том, что валидация капчи кэшируется после оправки формы

ниче там не кешируется, это в самой обработке формы косяк стоит

 

находим строку

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

 

и перед ней вставляем

if (isset($this->session->data['gcapcha'])) {
    unset($this->session->data['gcapcha']);
}

 

После успешной отправки капча будет работать

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

2 часа назад, bogdan281989 сказал:

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

ересь какая то вообще, выше описан косяк этой формы отправки в опенкарте

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

8 минут назад, Venter сказал:

ересь какая то вообще, выше описан косяк этой формы отправки в опенкарте

Скорее всего вы слегка ошибаетесь, капча использует куки 

 

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

13 минут назад, Venter сказал:

ересь какая то вообще, выше описан косяк этой формы отправки в опенкарте

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

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

19 минут назад, bogdan281989 сказал:

Скорее всего вы слегка ошибаетесь, капча использует куки 

вот тебе контроллер

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

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

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

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

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

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

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

 

Где там куки?????????

14 минут назад, bogdan281989 сказал:

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

 

удалять надо сохраненную валидацию если форма успешно отправлена, не хочешь удалять так лови спам

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

22 минуты назад, bogdan281989 сказал:

Скорее всего вы слегка ошибаетесь, капча использует куки 

 

 

И это пост про 2 версию, а мы вроде как обсуждаем 3 версию

Да и там нет никаких кук, всё та же сессия

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

7 минут назад, Venter сказал:

Да и там нет никаких кук, всё та же сессия

По поводу бага в форме соглашусь с вами, ошибался. И ведь сталкивался, да забыл :oops:
Но куки всё-таки есть, без них рекапча вообще работать не будет (если в браузере запретить). Но это другой вопрос.

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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