-1

我正在尝试实现带有“我不是机器人”的 Google recaptcha v2,您必须单击图像,例如:消火栓。

前端工作正常,但我无法正确获取服务器端代码。

我在当前的验证中尝试了这个,但即使在正确完成重新验证后,我仍然会收到我设置的验证错误消息。

        $secretKey = 'MY_SECRET_KEY';
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response']); 
        $responseData = json_decode($verifyResponse);
        if($responseData !== 'success') {
            $message .= 'Invalid captcha';
        }


        if(!empty($message)) {

            $response['success'] = false;
            $response['message'] = $message;
        } else {

         //success

将 $responseData 记录到控制台时,我得到:

{success: true, challenge_ts: "2019-07-11T17:11:20Z", hostname: "example.com"}
4

1 回答 1

1

文档json_decode()清楚地说明了它返回的内容:

以适当的 PHP 类型返回以 json 编码的值。值 true、false 和 null 分别返回为 TRUE、FALSE 和 NULL。如果无法解码 json 或编码的数据深度超过递归限制,则返回 NULL。

您不应该将 的返回值与json_decode()字符串进行比较(在您提供的示例中,'success')。相反,使用普通的PHP 属性 getter/setter 表示法访问对象内部的值:

if(!$responseData->success) {
    $message .= 'Invalid captcha';
}
于 2019-07-11T17:18:08.183 回答