我正在将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)输出,以了解某些错误信息。
还有其他调试方法吗?
准备根据要求添加更多信息。
谢谢。
编辑:添加了更多信息以根据评论进行澄清。
答案 0 :(得分:1)
几个小时后,我的头撞到墙上@MarioWerners的评论证明代码运行良好,因此我开始查看自己的环境。因为我在本地开发,所以Google拒绝了该请求,因此我不得不添加。
//仅开发
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOSTM => false
现在请求已被接受。
事后看来,我应该在问题中加入环境。我很抱歉。