Показать сообщение отдельно
  #4 (permalink)  
Старый 09.07.2019, 20:54
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Lutsk
Уже весь инет перерыл так и не нашел ответа.
А зачем рыть весь интернет, когда достаточно посмотреть документацию! https://developers.google.com/recaptcha/docs/verify

Сообщение от Lutsk
Уже весь инет перерыл так и не нашел ответа.
Всё таки не весь!

Сообщение от Lutsk
Уже весь инет перерыл так и не нашел ответа.
А на английском языке смотрели? А на арабском? А на мандарине? Нет? Ну тогда вы почти и не начинали рыть!

Каждый reCAPTCHA токен верен только на протяжении 2-ух минут, и может быть проверен один раз, что позволяет избежать атак. Поэтому токен следует генерировать перед отправкой формы! Если вам нужен новый токен, вы можете сгенерировать новый токен.


Т. е. вам надо при отправке формы получить токен, записать в форму, отправить её на сервер. Там произвести соответствующий запрос для проверки и в зависимости от результата произвести дальнейшую обработку данных формы.


Ваш пример... Публичный ключ замените на свой...
(function($) {
	var grecaptcha = window.grecaptcha;
	if (!grecaptcha) return alert("reCaptha not found");

	$(function() {
		$("body").on("submit", 'form[name="form_ajax"]', function() {
			var form = $(this),
				messages = $(form).find(".messages");

			$(messages).hide();
			$(messages)
				.find(".message")
				.hide()
				.html("");

			grecaptcha.ready(function() {
				grecaptcha
					.execute("6Levz6wUAAAAAJuGP_hRQKzfXUzwt6Llbk1-vL1y", {
						action: "form"
					})
					.then(function(token) {
						var tokenField = $("input[name=token]");
						if (tokenField.length === 0) {
							form.append('<input type="hidden" name="token">');
						}
						$("input[name=token]").val(token);
					})
					.then(function() {
						$.post(
							form.attr("action"),
							form.serializeArray(),
							function(response) {
								if (response.success) {
									$(messages)
										.find(".message.success")
										.html(response.messages.success.join("<br />"))
										.show();
								} else {
									$(messages).show();
									$(messages)
										.find(".message.error")
										.html(response.message.replace(/\n/g, "<br />"))
										.show();
								}
								$(messages).show();
							},
							"json"
						).fail(function(response) {
							$(messages)
								.find(".message.error")
								.html(response.status + ":" + response.statusText)
								.show();
							$(messages).show();
						});
					});
			});

			return false;
		});
	});
})(jQuery);
Ответить с цитированием