我正在使用此代码获取我的本地 IP
if (getenv('HTTP_X_FORWARDED_FOR'))
$ip=getenv('HTTP_X_FORWARDED_FOR');
else
$ip=getenv('REMOTE_ADDR');
我正在获取客户端默认网关 IP,但我想要客户端的实时 IP。
PHPs getenv(
REMOTE_ADDR)
将为您提供客户端的可见网络地址:
REMOTE_ADDR = hostnumber
hostnumber = ipv4-address | ipv6-address
ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
ipv6-address = hexpart [ ":" ipv4-address ]
hexpart = hexseq | ( [ hexseq ] "::" [ hexseq ] )
hexseq = 1*4hex *( ":" 1*4hex )
但是,如前所述,您的服务器只能获取它实际可以看到的 IP 地址。如果客户端隐藏在网关后面(带有 NAT 的 pe),那么您将只能看到 NAT 地址。PHPgetenv()
无法改变那些基本的网络基础。
第一条评论是正确的,但是 HTTP_X_FORWARDED_FOR 中提供了一些代理客户端的 IP,这似乎不是你的情况。
查看其他环境变量(phpinfo() 或 print_r($_SERVER))以查看您的客户端 IP 是否可用。
如果没有,这是不可能的。代理正在隐藏真实 IP(应该如此)。