IP地址奇怪的组合
IP address strange combination
美好的一天,
我在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:159, 172.69.55.30
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 162.158.111.183
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 141.101.105.236
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 172.69.55.208
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 172.69.55.209
客户声称他只是在一台 PC 上使用该系统。我当然敢怀疑这个说法
但是我根本无法理解这些IP地址。
这就像附加到 IPv6 地址的 IPv4 地址。
我希望有人能告诉我他们的真实 IP 是什么,这是他们的内部地址粘贴到他们的路由器地址吗?以及如何避免这种情况?
EDIT : I will try to explain again. I use the above mentioned code to obtain the IP address.
Now the results I get are like the following as above. It looks like I
mean :
2001:1c04:3403:9bf0:a8a6:2d21:8006:159 AND 172.69.55.30
But i get a full string : 2001:1c04:3403:9bf0:a8a6:2d21:8006:159,
172.69.55.30 Like this IS the IP address. Looks pretty unlikely to me. But still that's exactly what's returned to me.
And I am wondering why this is?
“键”的顺序很重要。因此,即使您确实需要远程地址,您通常也更有可能以 HTTP_X_FORWARDED_FOR
结束。我想这就是你正在看的那个。它的值是随 HTTP 请求一起发送的 HTTP header。
HTTP_X_FORWARDED_FOR
可以包含多个 IP 地址。当请求通过多个代理服务器链接时,每个代理都应将前一个代理的 IP 添加到现有的 X-Forwarded-For header 以便保留整个链。语法是:
X-Forwarded-For: <client>, <proxy1>, <proxy2>
参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
由于 IPv4 和 IPv6 地址都不包含逗号,您可以查找逗号以查看您是否有多个 IP 地址。如果这样做,您可以使用第一个,客户端计算机的 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:a8a6:2d21:8006:159, 172.69.55.30
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 162.158.111.183
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 141.101.105.236
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 172.69.55.208
- 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 172.69.55.209
客户声称他只是在一台 PC 上使用该系统。我当然敢怀疑这个说法
但是我根本无法理解这些IP地址。 这就像附加到 IPv6 地址的 IPv4 地址。
我希望有人能告诉我他们的真实 IP 是什么,这是他们的内部地址粘贴到他们的路由器地址吗?以及如何避免这种情况?
EDIT : I will try to explain again. I use the above mentioned code to obtain the IP address.
Now the results I get are like the following as above. It looks like I mean :
2001:1c04:3403:9bf0:a8a6:2d21:8006:159 AND 172.69.55.30
But i get a full string : 2001:1c04:3403:9bf0:a8a6:2d21:8006:159, 172.69.55.30 Like this IS the IP address. Looks pretty unlikely to me. But still that's exactly what's returned to me.
And I am wondering why this is?
“键”的顺序很重要。因此,即使您确实需要远程地址,您通常也更有可能以 HTTP_X_FORWARDED_FOR
结束。我想这就是你正在看的那个。它的值是随 HTTP 请求一起发送的 HTTP header。
HTTP_X_FORWARDED_FOR
可以包含多个 IP 地址。当请求通过多个代理服务器链接时,每个代理都应将前一个代理的 IP 添加到现有的 X-Forwarded-For header 以便保留整个链。语法是:
X-Forwarded-For: <client>, <proxy1>, <proxy2>
参见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
由于 IPv4 和 IPv6 地址都不包含逗号,您可以查找逗号以查看您是否有多个 IP 地址。如果这样做,您可以使用第一个,客户端计算机的 IP 地址,或者最后一个,连接经过的最后一个代理。