我正在使用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;

我不知道错误在哪里。

最佳答案

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()。 https://stackoverflow.com/a/5522668/3160141

关于php - 如何在PHP中从ipinfo.io获取位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28012011/

10-12 02:55