Подтвердить что ты не робот

Google ReCaptcha не публикует "g-recaptcha-response"

Этот вопрос задан раньше: Новый Google ReCaptcha, не отправляющий/получающий "g-recaptcha-response" , но ответа не было.

У меня есть то же самое, что и у меня, но код здесь не работает:

if(!$captcha){
   exit;
}

поэтому $captcha=$_POST['g-recaptcha-response'] кажется пустым.

новый google recaptcha с флажком на стороне сервера php= Второй ответ здесь также не работает.

Кто-нибудь знает, почему это может случиться?

4b9b3361

Ответ 1

Я столкнулся с этой проблемой и обнаружил, что моя форма закрывалась преждевременно в DOM, потому что она находилась внутри таблицы. ReCaptcha устанавливает отображение: нет g-recaptcha-response textarea, а затем заполняет данные, когда вы заполняете captcha. Кажется, что они ищут дочерние элементы формы, в которых находится div, и поэтому не могли найти g-recaptcha-response, который он изначально создал. Я положил форму вокруг стола, и после этого он работал нормально.

Ответ 2

Сегодня у меня была такая же проблема (g-recaptcha-response не имело значения при отправке) на веб-сайте коллеги. Оказывается, что тег <form был ошибочно вложен сразу после открывающего тега <table (не внутри td, а непосредственно после <table).
Это вызвало проблему.
После перемещения тега form способом он завернул table, значение g-recaptcha-response было правильно отправлено на сервер после отправки.

Ответ 3

Проверьте, есть ли у вас следующее в части, где вы показываете форму пользователю:

  • Между <form> и </form>:

    <div class="g-recaptcha" data-sitekey="your_public_key"></div>

  • Перед закрывающим тегом </head>:

    <script src='https://www.google.com/recaptcha/api.js'></script>

  • Убедитесь, что ваша форма использует post как метод,...

    <form method="post" ...>

Если они верны, по крайней мере некоторые $_POST['grecaptcha-response'] должны появиться на вашем пути. Сначала проверьте их в полученном на стороне клиента html-коде (во многих браузерах нажав Strg + U, глядя на пользовательскую форму) - вместо кода на стороне сервера - легче работать с этими знаниями. Если все они находятся на месте даже у клиента, это, однако, будет жестким. ^^

Ответ 4

Просто такая же проблема. Проблема не была тегом <table>, но это был тег <div>, вызывающий проблему.

Моя форма была в основном <div>, используемом для форматирования общей компоновки формы. Тег <form> не должен находиться в основном <div>, который я использовал для макета формы. Я переместил тег <form> непосредственно перед тегом макета формы <div>, и он начал работать отлично.

Ответ 5

Сначала проверьте, установлен ли recaptcha

if(!isset($_POST['g-recaptcha-response']) ){
    die ("Error: Not valid recaptcha on form");
}

Также посмотрите на простой учебник PHP для простой отладки.

Ответ 6

Да, ошибка DOM

Ошибка кода

table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"
form id="contacto" name="contacto" method="post" action="xxx"

Код ОК


form id="contacto" name="contacto" method="post" action="xxx"
table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"

Ответ 7

Кажется, Google хочет, чтобы ваши открывающие и закрывающие теги были вне других элементов DOM, таких как <table> или <div>. У меня была такая же проблема, которая теперь решена. Переместите свой...

<div class="g-recaptcha" data-sitekey="abcd1234etc."></div>

... код вне любого или тега, и он будет работать. Похоже, что Google не может найти форму и ввести значение своей формы в противном случае.

Ответ 8

Идеальное решение - не создавать свой собственный g-recaptcha-response, потому что Google заполнит его ответом и все еще продолжит создание другого g-recaptcha-response textarea, но затем не будет заполнять его значением ответа