$ _SERVER对我不起作用

man*_*eja 0 php

即时通讯使用以下代码来获取客户端IP当我尝试通过它获取我的IP它说103.245.196.41但我的实际IP是10.100.210.5.我的代码:

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip=$_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (!empty($_SERVER['REMOTE_ADDR'])) {
    $ip=$_SERVER['REMOTE_ADDR'];
}
Run Code Online (Sandbox Code Playgroud)

gre*_*eke 6

您可能正在进行地址转换(NAT)的路由器.10.100.210.5是一个保留的内部IP,不能在互联网上使用.103.245.196.41是您的ISP(Internet服务提供商)分配给您的路由器的外部IP.

因此,您的计算机(10.100.210.5)通过路由器访问您的脚本,该路由器屏蔽您的内部IP并显示外部(103.245.196.41)IP.

当数据从互联网返回给您时,NAT路由器知道将其发送回本地网络上的计算机.

这是一件好事,允许您拥有一个无人可以从外部访问的专用网络.

  • 拥有相同的ISP与拥有相同的ip不同.ISP的每个帐户都有一个唯一的IP.从您家中访问互联网的任何人都将拥有相同的传出IP,但即使您拥有相同的ISP,您的邻居也将拥有另一个IP. (2认同)