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

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


Recommended Posts

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

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


  В 30.09.2021 в 06:45, max_max_max сказав:

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

Expand  

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

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

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

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


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

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


  В 30.09.2021 в 06:45, max_max_max сказав:

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

Expand  

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

 

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

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

 

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

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

 

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

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

  В 30.09.2021 в 08:55, bogdan281989 сказав:

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

Expand  

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

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

  В 30.09.2021 в 10:58, Venter сказав:

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

Expand  

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

 

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

  В 30.09.2021 в 10:58, Venter сказав:

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

Expand  

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

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

  В 30.09.2021 в 11:07, bogdan281989 сказав:

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

Expand  

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

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

 

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

  В 30.09.2021 в 11:12, bogdan281989 сказав:

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

Expand  

 

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

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

  В 30.09.2021 в 11:07, bogdan281989 сказав:

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

 

Expand  

 

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

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

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

  В 30.09.2021 в 11:29, Venter сказав:

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

Expand  

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

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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