Something very odd is happening with this piece of php. Instead of filling the $country variable, it's printing the entire json onto the browser window. I don't understand why it's doing this.
$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];
Here's the entire error it spits out:
<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>
Also, why am I getting this non-object error?
add curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
to your curl
Also
$country = $decode['country'];
instead of
$country = $decode[country];
Note how you are accessing the country key of the $decode array.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.