【问题标题】:Get location form a users IP address从用户 IP 地址获取位置
【发布时间】:2018-03-30 11:13:02
【问题描述】:

我正在尝试从使用的 IP 地址获取位置。有很多关于如何做到这一点的主题。我真的like this one,它有效并且非常清晰。 示例中使用的 IP 地址找到了德国某处的位置,但是当我使用我的 IP 地址 (192.168.0.7) 时,一切都返回未知。当站点仅在线时,我不会使用我的 IP 地址,我会使用 PHP 查找用户的 IP 地址。

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'];

        }
$ip = '192.168.0.7'; //replace with my IP address

我也遇到过this site,它可以找到我的 IP 地址,除了数字不同之外,它非常准确。 2.126.219.101

有没有一种方法可以测试我在 localhost 上的内容,以使用上述方法获取我的 IP 地址,或者我的 IP 地址有什么问题。

【问题讨论】:

  • 192.168.* 是一个私有 IP 地址。您无法对其进行地理定位,这毫无意义(现在全世界可能有数千台计算机拥有该确切 IP)。使用公共 IP 地址。
  • 理论上如此 if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } 其他 { $ip = $_SERVER['REMOTE_ADDR']; } 将在线工作

标签: php ip


【解决方案1】:

192.168.0.7 是您的私有 IP 地址。它仅在您的本地(家庭、工作...)网络内有效。因为它仅在您的本地网络内有效,所以不能用于定位。事实上,目前世界上可能还有数百万其他计算机在它们自己的网络中也拥有这个私有 IP 地址。

2.126.219.101 是您的公共 IP 地址。就本地网络之外的任何机器而言,这就是您的 IP 地址。它可以用来指示位置。

【讨论】:

  • 这是有道理的,但它现在非常准确。例如,我住在英格兰北部,但我在伦敦买了笔记本电脑。我的公共 IP 地址返回伦敦而不是我的实际位置
  • 恐怕这是 IP 定位的本质 - 它并不总是准确的。您的 ISP 可能从一个服务于该国大部分地区的池中分配您的 IP 地址,而不仅仅是您的本地区域。
  • 更好的方法是使用 javascript 并在页面加载后显示数据。会准确很多
猜你喜欢
  • 1970-01-01
  • 2014-02-13
  • 2016-08-21
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
相关资源
最近更新 更多