【问题标题】:Get IP address of ISP with PHP用PHP获取ISP的IP地址
【发布时间】:2014-09-12 11:30:01
【问题描述】:

如果我在 php 中写入 $_SERVER['REMOTE_ADDR'] 我会得到我的 ip:176.x.x.x 这个地址与我在 cmd 中写入的 ipconfig 中的地址相同。

现在,如果我在 google 中查找我的 ip,我会得到另一个 ip:87.x.x.x

问题是:用php可以得到这个ip87.x.x.x吗?

【问题讨论】:

  • 您从 本地主机 连接并获得本地 IPV4 地址,因为这是用于通过网络连接到 Web 服务器的地址。如果您从 internet 而不是从 本地网络 连接,您将获得您在问题中询问的另一个 IP 地址。

标签: php ip-address php-5.3 php-5.4 php-5.5


【解决方案1】:

是的,可以使用$_SERVER['REMOTE_ADDR']。唯一要做的就是:将您的脚本放在互联网上的一些免费/非免费虚拟主机上。

你得到你的 ip:176.x.x.x,因为这个 ip 是你在本地网络中的 ip,并且你在本地网络中的计算机(或其他计算机)上运行 webserver。

您的本地网络已通过路由器连接到互联网。路由器连接 2 个网络,因此在路由器上您有 2 个 IP 地址:本地网络 ip (176.x.x.x) 和互联网 ip (87.x.x.x)。 根据网络服务器的位置,您将获得这些地址之一。

当你用谷歌搜索你的 ip 时,你正在互联网上寻找它。放置在互联网上的网络服务器将看到您的互联网 IP 地址。顺便提一句。您的本地网络 ip 被 NAT 伪装。

【讨论】:

    【解决方案2】:

    geoip_isp_by_name() 函数将返回分配 IP 的 Internet 服务提供商 (ISP) 的名称

    <?php
    $isp = geoip_isp_by_name('www.example.com');
    if ($isp) {
    echo 'This host IP is from ISP: ' . $isp;
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      使用以下函数获取客户端 IP。希望它会工作

      function getClientIP() {
          if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
              $ip = $_SERVER['HTTP_CLIENT_IP'];
          } else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
              $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
          } else {
              $ip = $_SERVER['REMOTE_ADDR'];
          }
          return $ip;
      }
      

      【讨论】:

      • 它对我有用。不知道为什么它不适合你。并编辑了我第一次错过的代码以添加返回语句。
      • 存在从浏览器获取ip的方法吗?
      猜你喜欢
      • 2011-02-07
      • 2013-04-19
      • 2013-03-14
      • 2015-05-11
      • 2010-12-15
      • 1970-01-01
      • 2021-02-26
      • 2021-10-22
      • 2012-09-01
      相关资源
      最近更新 更多