如何获取ipinfo.io在PHP的位置?
How to obtain location from ipinfo.io in PHP?
我正在使用 ipinfo.io 使用 PHP 获取我当前的城市(位置)。
但是,在使用这段代码时,我无法看到我所在的城市。
$ipaddress = $_SERVER["REMOTE_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json);
return $details;
}
$details = ip_details($ipaddress);
echo $details->city;
不知道哪里出错了
你在本地主机上工作吗?试试下面的代码:
$ipaddress = $_SERVER["REMOTE_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json); // HERE!!!
return $details;
}
$details = ip_details($ipaddress);
echo $details->ip; // CHANGE TO IP!!!
如果是returns你的IP,一切正常,你的IP可能是127.0.0.1
,而本站不知道位置,所以$details->city
没有设置。如果城市不存在,您必须检查 if (isset($details->city))
并制作替代脚本。
我知道你还有问题。尝试做这样的事情:
$string = file_get_contents('http://ipinfo.io/8.8.8.8/geo');
var_dump($string);
$ipaddress = $_SERVER["REMOTE_ADDR"];
var_dump($ipaddress);
$string2 = file_get_contents('http://ipinfo.io/'.$ipaddress.'/geo');
var_dump($string2);
并写下失败的评论;)。
如果只有IP部分可以,试试看这一篇: File_get_contents not working?
还有运行这个错误报告最多的代码:
error_reporting(-1);
这部分代码之前。
function getClientIP(){
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ipaddress = getClientIP();
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json, true);
return $details;
}
$details = ip_details($ipaddress);
echo $details['city'];
这应该有效。
但是,如果您需要在线资源,我建议您习惯使用 curl 而不是 file_get_contents()。
我知道这个 post 是旧的,但对于目前正在寻找同样问题的人来说,如果它在本地主机上,这将解决问题:
$ipaddress = $_SERVER["SERVER_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/");
$details = json_decode($json); // decode json with geolocalization information
return $details;
}
$details = ip_details($ipaddress);
echo $details->ip; // Use city, ip or other thing... see https://ipinfo.io
如果它在 Web 服务器上 只使用这个:
$server = $_SERVER['REMOTE_ADDR']; //in localhost this is ::1
echo "Your IP is: ".$server;
注意:2 个代码将获得 public ip,第一个代码通过本地主机获得 public ip,第二个代码通过网络服务器获得 public ip。 :)
我正在使用 ipinfo.io 使用 PHP 获取我当前的城市(位置)。
但是,在使用这段代码时,我无法看到我所在的城市。
$ipaddress = $_SERVER["REMOTE_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json);
return $details;
}
$details = ip_details($ipaddress);
echo $details->city;
不知道哪里出错了
你在本地主机上工作吗?试试下面的代码:
$ipaddress = $_SERVER["REMOTE_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json); // HERE!!!
return $details;
}
$details = ip_details($ipaddress);
echo $details->ip; // CHANGE TO IP!!!
如果是returns你的IP,一切正常,你的IP可能是127.0.0.1
,而本站不知道位置,所以$details->city
没有设置。如果城市不存在,您必须检查 if (isset($details->city))
并制作替代脚本。
我知道你还有问题。尝试做这样的事情:
$string = file_get_contents('http://ipinfo.io/8.8.8.8/geo');
var_dump($string);
$ipaddress = $_SERVER["REMOTE_ADDR"];
var_dump($ipaddress);
$string2 = file_get_contents('http://ipinfo.io/'.$ipaddress.'/geo');
var_dump($string2);
并写下失败的评论;)。
如果只有IP部分可以,试试看这一篇: File_get_contents not working?
还有运行这个错误报告最多的代码:
error_reporting(-1);
这部分代码之前。
function getClientIP(){
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ipaddress = getClientIP();
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json, true);
return $details;
}
$details = ip_details($ipaddress);
echo $details['city'];
这应该有效。
但是,如果您需要在线资源,我建议您习惯使用 curl 而不是 file_get_contents()。
我知道这个 post 是旧的,但对于目前正在寻找同样问题的人来说,如果它在本地主机上,这将解决问题:
$ipaddress = $_SERVER["SERVER_ADDR"];
function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/");
$details = json_decode($json); // decode json with geolocalization information
return $details;
}
$details = ip_details($ipaddress);
echo $details->ip; // Use city, ip or other thing... see https://ipinfo.io
如果它在 Web 服务器上 只使用这个:
$server = $_SERVER['REMOTE_ADDR']; //in localhost this is ::1
echo "Your IP is: ".$server;
注意:2 个代码将获得 public ip,第一个代码通过本地主机获得 public ip,第二个代码通过网络服务器获得 public ip。 :)