Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php IP地址奇怪的组合_Php_Ip_Real Ip - Fatal编程技术网

Php IP地址奇怪的组合

Php IP地址奇怪的组合,php,ip,real-ip,Php,Ip,Real Ip,你好 我在PHP中使用以下代码来获取IP地址: $IPkey = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR'); foreach($IPkey as $name){ if(isset($_SERVER[$name])) return $_SERVER[$name]; } 现在有了一个客户,我得到了非常尴尬的结果 我突然得到以下结果: 2001:1c04:3403:9bf0

你好

我在PHP中使用以下代码来获取IP地址:

    $IPkey = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR');

    foreach($IPkey as $name){
        if(isset($_SERVER[$name])) return $_SERVER[$name];
    }
现在有了一个客户,我得到了非常尴尬的结果

我突然得到以下结果:

  • 2001:1c04:3403:9bf0:a8a6:2d21:8006:159172.69.55.30
  • 2001:1c04:3403:9bf0:a8a6:2d21:8006:159162.158.111.183
  • 2001:1c04:3403:9bf0:a8a6:2d21:8006:159141.101.105.236
  • 2001:1c04:3403:9bf0:a8a6:2d21:8006:159172.69.55.208
  • 2001:1c04:3403:9bf0:a8a6:2d21:8006:159172.69.55.209
客户声称他只是从一台电脑上使用该系统。当然,我敢怀疑这一说法

但我无法理解这些IP地址。 这就像一个IPv4地址附加到IPv6地址

我希望任何人都能告诉我他们真正的IP是什么,这是他们的内部地址粘贴到他们的路由器地址??如何避免这种情况

编辑:我将尝试再次解释。我使用上述代码获取IP地址

现在我得到的结果如下所示。看起来我 意思是:

2001:1c04:3403:9bf0:a8a6:2d21:8006:159和172.69.55.30

但我得到了完整的字符串:2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 172.69.55.30类似的IP地址。我觉得不大可能。但这正是我得到的回报

我想知道为什么会这样

“钥匙”的顺序很重要。因此,即使您真的需要远程地址,您也很可能最终使用
HTTP\u X\u FORWARDED\u FOR
。我想这就是你正在看的那个。它的值是与HTTP请求一起发送的HTTP头的值

HTTP\u X\u FORWARDED\u FOR
可以包含多个IP地址。当一个请求通过多个代理服务器链接时,每个代理都应将前一个代理的IP添加到现有的X-Forwarded-For头中,以便保留整个链。语法是:

X-Forwarded-For: <client>, <proxy1>, <proxy2>
X-Forwarded-For:,
见:

由于IPv4和IPv6地址都不包含逗号,因此可以查找逗号以查看是否有多个IP地址。如果这样做,您可以选择第一个,即客户端计算机的IP地址,或最后一个,即连接通过的最后一个代理