Я использую API подтверждения сайта Google для моего сайта.
$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;
это ничего не показывает
Кто-нибудь может сказать мне, что мне не хватает ??
$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'
Согласно 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)
,