我正在为我的网站使用google站点验证recaptcha API。
$json = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$response."&remoteip=".$ip);
当我打印echo $json;
时,它显示正确的响应
{ "success": true, "challenge_ts": "2018-08-23T12:43:42Z", "hostname": "staging.my.com" }
但是当我尝试
$data = json_decode($json,true);
echo $data->success;
它什么也没显示
有人可以告诉我我在想什么吗?
答案 0 :(得分:1)
$json = '{ "success": true, "challenge_ts": "2018-08-23T12:43:42Z", "hostname": "staging.my.com" }';
$data = json_decode($json,true);
这将从示例JSON字符串而不是对象(用于var_dump($data);
来查看您实际存储的内容)中生成一个关联数组。
只需使用正确的语法访问数组值即可:
echo $data["success"]; // prints '1'
或:
echo ($data["success"])?'success':'failure'; // prints 'success'
答案 1 :(得分:0)
根据PHP文档,如果将第二个参数assoc
设置为true,则该函数将返回关联数组而不是std类。
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
关联
为TRUE时,返回的对象将转换为关联数组。
因此,请尝试$data['success']
或将json_decode($json, true)
更改为json_decode($json)
。