Recaptcha V2 вернуть ложный PHP - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь реализовать Google ReCaptcha V2 в форме PHP.

Вот мой код:

    $arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);

if($_SERVER["REQUEST_METHOD"] === "POST")
    {
        //form submitted

        //check if other form details are correct

        //verify captcha
        $recaptcha_secret = "";
        $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$_POST['g-recaptcha-response'], false, stream_context_create($arrContextOptions));
        $response = json_decode($response, true);
        if($response["success"] === true)
        {
            echo "Logged In Successfully";
        }
        else
        {
            echo "You are a robot";
        }
    }

?>

Когда я отправляю свою форму, она всегда возвращает

Вы робот

.

Мой открытый ключ правильный, и мой закрытый ключ тоже.

Я не знаю, что я делаю не так?

Я работаю как localhost.

Спасибо.

1 Ответ

0 голосов
/ 25 мая 2018

Только что интегрированный 2 дня назад перепросмотр V2 от Google

Попробуйте мой код ниже, чтобы увидеть, решает ли ваша проблема:

Я вижу, вы делаете file_get_contents, и я думаю здесьэто ваши проблемы, вы должны сделать POST, пожалуйста, используйте мой код ниже

if($_SERVER["REQUEST_METHOD"] === "POST"){
    // prepare post variables
    $post = [
        'secret' => $secret,
        'response' => $_POST['g-recaptcha-response'],
        'remoteip'   => 'is optional, but i pass it',
    ];

    $ch = curl_init('https://www.google.com/recaptcha/api/siteverify');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

    $response = curl_exec($ch);
    curl_close($ch);

    var_dump($response);
    $response = json_decode($response, true);

    // check result
    if(isset($response['success']) && $response['success'] == true){
        echo "Logged In Successfully";
    }else{
        echo "You are a robot";
    }
}
...