[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как получить ответ от reCaptcha
vodolei2150
Установил на сайте reCaptcha от гугла, настроил, но не смог найти инфу как получить ответ от гугла капча введена верно или нет. Подскажите кто знает. Заранее спасибо
volter9
Вот тут все описано: https://developers.google.com/recaptcha/docs/verify (en)

Проверяете поле g-recaptcha-request в $_POST, если есть это поле, то посылаете запрос googl'у на этот URL: https://www.google.com/recaptcha/api/siteverify?secret=%ключ от рекапчи%&response=%значение поля g-recaptcha-response%

Дальше обрабатываете JSON ответ, если status === true, гуд, можно обрабатывать данные. === false, усачу ввели не верно, просим заполнить капчу заново.



_____________
Мой блог
vodolei2150
Как делать запрос я знаю, а вот как получить ответ JSON не могу понять.
{
"success": true|false,
"error-codes": [...] // optional
}

Это что значит, как его использовать? Т.е. если проверяю скрипт
if($_POST['login'] & $_POST['password']){ JSON как проверит? }
volter9
Есть такая функция называется json_decode. Она конвертирует (декодирует) JSON в stdClass или массив:

$json = '{
"success": true,
"error-codes": []
}'
;

var_dump(json_decode($json), true);
/*
array(2) {
'success' =>
bool(true)
'error-codes' =>
array(0) {
}
}
*/


Ну вот, посылаете запрос гуглу, получаете ответ в виде JSON'а, и потом проверяете статус:

if($_POST['login'] & $_POST['password'] && isset($_POST['g-recaptcha-response'])){
// Ваша функция которая делает запрос гуглу и получает ответ
$json = function_which_verify_recaptcha($_POST['g-recaptcha-response']);
$reponse = json_decode($json, true);

if ($response['status'] === true) { // или просто if ($respons['status']) {
// Тут делается занос в БД или просто работа продолжается

}
}


_____________
Мой блог
vodolei2150
Что то у меня не получается собрать все во едино. Я новичок и прошу мне помочь со скриптом

подключаю скрипт

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

отправляю форму файлу обработчику reg.php

<form action="reg.php" method="post">
<input
type="email" placeholder="Введите Ваш email адрес..." required name="email" />
<input
type="password" placeholder="Ваш сложный пароль..." required name="passw" />
<div
class="g-recaptcha" data-sitekey="КЛЮЧ"></div>
<input
type="submit" value="Зарегистрироваться" name="submit_reg"/>
</form>



if($_POST['submit_reg'])
{
if(empty($_POST['email']) && empty($_POST['passw']) && empty($_POST['g-recaptcha-response'])) {
echo "заполните все";
exit();

} else {

$recaptcha = $_POST['g-recaptcha-response'];
$google_url="https://www.google.com/recaptcha/api/siteverify";
$secret='Google Secret Key';
$ip=$_SERVER['REMOTE_ADDR'];
$url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;

// Ваша функция которая делает запрос гуглу и получает ответ
// какая должна быть функция здесь?


$json = function_which_verify_recaptcha($_POST['g-recaptcha-response']);
$reponse = json_decode($json, true);

if ($response['status'] === true) {

}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.