2015-12-11 2 views
1

Что-то очень странное происходит с этим фрагментом php. Вместо заполнения переменной $ country, она печатает весь json в окне браузера. Я не понимаю, почему он это делает.Почему это json-декодирование на экране?

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://ipinfo.io/".$this_ip."/json"); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"); 
$headers = array(); 
$headers[] = 'Referer: http://www.example.com'; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
$json = curl_exec ($ch); 
curl_close ($ch); 

$decode = json_decode($json,true); 
$country = $decode[country]; 

Вот вся ошибка он выплевывает:

<body style="height:100%; overflow:auto; padding:0px; margin:0px;">{ 
    "ip": "8.8.8.8", 
    "hostname": "google-public-dns-a.google.com", 
    "city": "Mountain View", 
    "region": "California", 
    "country": "US", 
    "loc": "37.3860,-122.0838", 
    "org": "AS15169 Google Inc.", 
    "postal": "94040" 
}<br> 
<b>Notice</b>: Trying to get property of non-object in <b>/var/www/html/example.php</b> on line <b>59</b><br> 

Кроме того, почему я получаю эту ошибку без объекта?

+2

вам необходимо заменить curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); – PRANAV

+0

Если вы хотите только страну, вы также можете запросить http://ipinfo.io/$this_ip/country - см. Http://ipinfo.io/developers –

ответ

8

добавить curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); к вашему завитка

+1

для вашей другой проблемы, измените '$ country = $ decode [country] ; 'to' $ country = $ decode ['country']; 'вам не хватало' '' на ключе вашего массива –

+1

Спасибо Gumma, я принимаю, когда таймер позволяет мне ... –

1

Также

$country = $decode['country']; 

вместо

$country = $decode[country]; 

Обратите внимание, как вы обращаетесь ключевой страной массива $ декодированием.

Смежные вопросы