html — Google без каптчи и переполнение стека

Я пытаюсь внедрить новую версию капчи на моем сайте.

Что я сделал до сих пор:

Внутри формы:

echo '<div class="g-recaptcha" data-sitekey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"></div>';

Внутри PHP:

$recaptcha = $_POST['g-recaptcha-response'];

if(!empty($recaptcha))
{

$google_url = "https://www.google.com/recaptcha/api/siteverify";
$secret = 'YYYYYYYYYYYYYYYYYYYYYYYYYYY';
$ip = $_SERVER['REMOTE_ADDR'];
$url = $google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
$res = getCurlData($url);
$res = json_decode($res, true);if($res['success'] == 'false')
{
$captcha_error = "Please re-enter your reCAPTCHA.";
}

}

Функция getCurlData:

function getCurlData($url)
{

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
$curlData = curl_exec($curl);
curl_close($curl);
return $curlData;
}

Чего я хочу достичь, так это различать, когда установлен флажок без капчи. Я хочу выдать ошибку пользователю, если он не установил этот флажок.

Пока я выдаю ошибку только в том случае, если ответ от Google: «Мы не уверены, что вы человек, перейдите к нашему второму уровню проверки» [if ($ res [‘success’] == ‘false’)].

PS: большая часть кода написана Шринивасом Тамадой. Вы можете найти это Вот.

Заранее спасибо.

1

Решение

Ответ является объектом JSON:

{
"success": true|false,
"error-codes": [...]   // optional
}

https://developers.google.com/recaptcha/docs/verify

Если вы проанализируете этот JSON, вы получите что-то вроде этого:

object(stdClass)[1]
public 'success' => boolean false
public 'error-codes' =>
array (size=1)
0 => string 'missing-input-response' (length=22)

Таким образом, если ответ содержит код ошибки с «missing-input-response», вы можете сказать, что пользователь не установил флажок.

Я реализовал No Captcha без curl в небольшой библиотеке, которую я недавно написал, так что вы можете проверить это, если хотите больше подробностей:
https://github.com/zoran-petrovic-87/ZorAuth

http://zoran87.blogspot.com/2014/12/zorauth-10b-complete-flexible-no.html

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector