Recaptcha V2返回假PHP

Recaptcha V2返回假PHP,php,forms,recaptcha,verification,Php,Forms,Recaptcha,Verification,我正在尝试以PHP形式实现GoogleReCAPTCHAV2 这是我的代码: $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), ); if($_SERVER["REQUEST_METHOD"] === "POST") { //form submitted

我正在尝试以PHP形式实现GoogleReCAPTCHAV2

这是我的代码:

    $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";
        }
    }

?>
当我提交表格时,它总是返回

你是一个机器人

我的公钥是正确的,我的私钥也是正确的

我不知道我做错了什么

我是本地主机


谢谢。

两天前刚刚集成了来自谷歌的V2 recaptcha

请尝试下面的代码,明确查看是否正在解决您的问题:

我可以看到你做文件的内容,我想这是你的问题,你必须发表文章,请使用我下面的代码

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";
    }
}

当您执行
var_转储($response[“success”])时,您看到了什么
上面写着“bool(false)”你是否正确地在url中传递了
$secret
?在
$response
上做
var\u dump
,那里有错误信息。@KarloKokkak只有在通过流上下文指示file\u get\u内容返回响应体时,即使状态代码指示错误,也要返回响应体,请参见“嗨”,谢谢你的回答。当我尝试使用您的代码时,它会显示“string(75)”{“success”:false,“error code”:[“missing input response”]}“You is a robot”make var_dump($_POST['g-recaptcha-response']);你得到了什么?你的表单使用ajax吗?看来$\u POST['g-recaptcha-response']没有返回key@Tweakdev请确保$_POST['g-recaptcha-response']保存capcta响应,我猜现在正在从formvar_转储返回空字符串($_POST['g-recaptcha-response']);显示“NULL”@Tweakdev,因为您有此问题,响应不在formdata中,您的表单是带刷新的简单php表单还是使用ajax?