Intereting Posts
Ловкость \ Utf8 \ Bootup вызывает проблемы с Laravel 4 Codeigniter & PHP – форсирование 404? Комментарии Facebook – Синхронизация между сайтом и страницей поклонников Выбор записей между двумя датами с использованием PHP из базы данных MySql Symfony2 Неопределенный метод. Имя метода должно начинаться с findBy или findOneBy Как использовать переменную функции в другой функции того же класса -Codeigniter Создание архива zip или tar.gz без exec поделиться одним и тем же файлом cookie между двумя веб-сайтами с помощью расширения PHP cURL PHP – установка унаследованного статического свойства также установит его в других классах, наследующих его Как я могу распечатать документ результатов XSLT с удаленными исходными элементами? количество строк в таблице Ошибка синтаксиса PHP «неожиданный конец $ end» Создание пользовательской панели выполнения загрузки Что такое $ variable?: Do? PHP: попытка создать новую строку с помощью "\ n"

Новый Google ReCaptcha не отправляет / не получает «g-recaptcha-response»

Я пытаюсь реализовать Googles новый «NoCaptcha» на моем сайте. Пока у меня виджет выглядит нормально, но он не проверяется на моей странице PHP.

Мой код настроен как таковой:

В <head>

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

Сторона клиента:

 <form id="contactform" action="bookingverify.php" method="POST"> <input type="text" name="name" size="41"> <!--OTHER FORM INPUTS--> <div class="g-recaptcha" data-sitekey="mypublickey"></div> </form> 

Серверная сторона (bookingverify.php)

  $captcha; if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false){ echo '<h2>You are spammer</h2>'; } else{ //SEND MAIL } ,  $captcha; if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false){ echo '<h2>You are spammer</h2>'; } else{ //SEND MAIL } ,  $captcha; if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false){ echo '<h2>You are spammer</h2>'; } else{ //SEND MAIL } ,  $captcha; if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false){ echo '<h2>You are spammer</h2>'; } else{ //SEND MAIL } ,  $captcha; if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=myprivatekey&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false){ echo '<h2>You are spammer</h2>'; } else{ //SEND MAIL } 

Я пробовал повторять $_POST['g-recaptcha-response'] но он кажется пустым. Это похоже на то, что переменная не отправляется на php.

Кто-нибудь знает, что я делаю неправильно здесь?

Ваш код работал нормально на моем тестовом сервере с помощью моего личного / открытого ключа. Это кажется тривиальным, но единственное, что я должен был добавить – у вас есть кнопка отправки в ваших других входных формах? Это то, что фактически помещает данные в ваш PHP-скрипт.

 <input type="submit"> </form> 

В противном случае добавьте var_dump($_POST['g-recaptcha-response']); на ваш bookingverify.php и посмотреть, что он выводит.

ОК, я не знаю, почему, но я удалил exit; во втором заявлении IF, и это сработало. Weird.

У меня была аналогичная проблема. Очевидно, если вы не установите флажок, то $ _POST ['g-recaptcha-response'] будет пустым. поэтому просто убедитесь, что вы нажмете его при тестировании