Recaptcha отсутствует-вход-ответ

Привет, ребята, у меня есть проблема с Google ReCaptcha.

Вот мой PHP-код:

$secret = 'SECRET_KEY';
$response = $_POST['g-recaptcha-respone'];
$remoteip = $_SERVER['REMOTE_ADDR'];

$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$remoteip";
$result_json = file_get_contents($url);
$resulting = json_decode($result_json, true);
print_r($resulting);

if($resulting['success']) {
//Success
}

входные данные print_r: Array ([success] => [коды ошибок] => Array ([0] => отсутствует-вход-ответ))

Как решить эту проблему?

Спасибо за ответы

4

Решение

Пожалуйста, обратите внимание : g-recaptcha-respone знак равно g-recaptcha-response

введите описание изображения здесь

введите описание изображения здесь

Google reCatcha API, вам может потребоваться указать дополнительные параметры для file_get_contents вызов функции, настройка параметров контекста специально для SSL (если сайт имеет SSL).

// If submitted check response
if ($_POST["g-recaptcha-response"]) {

// Input data
$secret = 'SECRET_KEY';
$response = $_POST['g-recaptcha-response'];
$remoteip = $_SERVER['REMOTE_ADDR'];

$url = "https://www.google.com/recaptcha/api/siteverify";

$post_data = http_build_query(
array(
'secret' => $secret,
'response' => $response,
'remoteip' => $remoteip
)
);

$options=array(

// If site has SSL then
'ssl'=>array(

// In my case its /etc/ssl/certs/cacert.pem

'cafile'            => '/path/to/cacert.pem',
'verify_peer'       => true,
'verify_peer_name'  => true,
),

'http' =>
array(
'method'  => 'POST',
'header'  => 'Content-type: application/x-www-form-urlencoded',
'content' => $post_data
)
);

$context = stream_context_create( $options );

$result_json = file_get_contents( $url, false, $context );
$resulting = json_decode($result_json, true);

if($resulting['success']) {
//Success
} else {
// action for no response
}

По крайней мере, на Ubuntu — если сайт имеет SSL

cd /usr/local/share/ca-certificates
sudo curl http://curl.haxx.se/ca/cacert.pem -o cacert.crt
sudo update-ca-certificates
sudo update-ca-certificates –fresh

и ваше кафе и путь будут

capath=/etc/ssl/certs/
cafile=/etc/ssl/certs/cacert.pem
7

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

В моем случае мне нужно было добавить два дополнительных параметра ('', '&') в этом призыве:

http_build_query(array(
'secret' => $secret,
'response' => $response,
'remoteip' => $remoteip
), '', '&');
1

Я не могу комментировать, поэтому я собираюсь ответить здесь. Я скопировал мой код, который работает отлично. и, между прочим, $ _POST [‘g-recaptcha-respone’], вы уверены, что ваше имя ввода ‘g-recaptcha-respone’?

$secret = 'SECRET-KEY';
$response = $_POST['g-recaptcha-response'];
$ip = $_SERVER['REMOTE_ADDR'];

$dav = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$response."&remoteip=".$ip);

$res = json_decode($dav,true);

if($res['success']) {
die(json_encode(0));
} else {
die(json_encode(1));
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector