【问题标题】:My php code is not returning the right ip address?我的 php 代码没有返回正确的 IP 地址?
【发布时间】:2015-07-26 03:31:32
【问题描述】:

我目前有一个 php 函数,它应该确定我网站上每个访问者的 ip 地址,但是由于某种原因,即使我使用 vpn 更改我的 ip 地址,它也会不断返回这个 ip 地址:10.1.1.27 (到另一个国家,例如美国、德国、英国)它仍然返回该地址。我希望有人可以向我解释这一点,如果可能的话,告诉我这是否是我的代码的问题?

功能:

function getIP(){
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
        if (array_key_exists($key, $_SERVER) === true){
            foreach (explode(',', $_SERVER[$key]) as $ip){
                $ip = trim($ip); 
                if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
                  return $ip;
                }else{
                    echo $ip;
                    throw new Exception("IP address is not valid");
                }
            }
        }
    }
}

【问题讨论】:

  • 这段代码所在的服务器在哪里?它在您的网络上吗?
  • 代码位于我在这里工作的服务器上。是的,它在我的网络上,但这就是为什么我使用 VPN 扩展来测试它,这会改变我的 ip
  • 好吧,IP 它吐出的是你本地的,你仍然在本地连接到它,而不是通过 VPN
  • hrm 听起来像你的权利!谢谢,我将尝试在未连接到我的工作本地网络的机器上进行测试。
  • 好的,成功了!非常感谢,救生员:)

标签: php ip ip-address


【解决方案1】:

我的猜测是您有防火墙或其他一些物理设备正在对访问者的 IP 地址进行 NAT。

您是否执行了反向查找以查看该 IP 地址在您的网络上的位置?

【讨论】:

    【解决方案2】:

    这可能对你有帮助..

    <?php
        if (getenv('HTTP_X_FORWARDED_FOR')) {
            $pipaddress = getenv('HTTP_X_FORWARDED_FOR');
            $ipaddress = getenv('REMOTE_ADDR');
            echo "Your Proxy IP address is : ".$pipaddress. "(via $ipaddress)" ;
        } else {
            $ipaddress = getenv('REMOTE_ADDR');
            echo "Your IP address is : $ipaddress";
        }
    ?>
    

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题。事实证明,我得到的是代理 IP 地址而不是我自己的 IP。于是我跑了:

      var_dump($_SERVER) 
      //you could also use print_r($_SERVER);
      

      然后寻找这样的东西:

       ["HTTP_X_REAL_IP"]
      

      然后将其捕获到这样的 var 中:

      $ip = getenv('HTTP_X_REAL_IP')
      

      【讨论】:

        猜你喜欢
        • 2012-12-16
        • 1970-01-01
        • 2018-11-20
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-05
        相关资源
        最近更新 更多