从Recaptcha响应中调试格式错误的json数据?

时间:2018-07-10 14:42:09

标签: php json recaptcha

我正在将recaptcha与ajax一起使用,并且所有发布的数据都工作正常。

将响应解码为json时出现问题。

当从Google回显recaptcha响应时,我从json_last_error()得到错误代码4,这表示json的语法不正确,无法解码。

如何/在何处获取json响应,以便对其进行调试? var_dump($responseKeys)给我null,$response给我1。

请注意,recaptcha正常工作,只是在解码响应以进行验证时遇到问题。

错误

无法解码JSON! JSON格式不正确

验证码

$ch = curl_init();

$ip = $_SERVER['REMOTE_ADDR'];

//read post content
$json = file_get_contents('php://input');

//turns json string into php var $obj
$obj = json_decode($json,true);

//retrieve captcha response
$captcha = $obj["captchaResponse"];

//create captchaResponse instance
$captcha;

//KEYS
//prod 
//$secretKey = 'xxx';

//localhost
$secretKey = "xxx";

curl_setopt_array($ch, [
    //curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    //$timeout = 5;
    CURLOPT_URL => "https://www.google.com/recaptcha/api/siteverify",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => [
        "secret" => $secretKey,
        "response" => $captcha,
        "remoteip" => $ip
    ],
    CURLOPT_RETURNTRANSFER => true
]);

//get response from recaptcha
$response = curl_exec($ch);
curl_close($ch);


$responseKeys = json_decode($response,true);

if(intval($responseKeys['success']) !== 1) {

        //debuggingRECAPTCHA RESPONSE
        echo  'var_dump' , var_dump($responseKeys);

        echo  '$jsonError ' , $jsonError;

    }`

当我回声$responseKeys时,我什么也没得到,'print_r($ responseKeys)'给了我1

我想知道如何获取$response的(编辑:json)输出,以了解某些错误信息。

还有其他调试方法吗?

准备根据要求添加更多信息。

谢谢。

编辑:添加了更多信息以根据评论进行澄清。

1 个答案:

答案 0 :(得分:1)

几个小时后,我的头撞到墙上@MarioWerners的评论证明代码运行良好,因此我开始查看自己的环境。因为我在本地开发,所以Google拒绝了该请求,因此我不得不添加。

//仅开发

CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOSTM => false

现在请求已被接受。

事后看来,我应该在问题中加入环境。我很抱歉。