我尝试使用 php 代码获取用户的 IP 地址:
$_SERVER["REMOTE_ADDR"];
当我检查与同一网络关联的计算机时,它为所有计算机提供了相同的 IP 地址......为什么会这样。我期待不同的IP地址。如何使用 php 获取不同的 IP 地址?
我尝试使用 php 代码获取用户的 IP 地址:
$_SERVER["REMOTE_ADDR"];
当我检查与同一网络关联的计算机时,它为所有计算机提供了相同的 IP 地址......为什么会这样。我期待不同的IP地址。如何使用 php 获取不同的 IP 地址?
IPV4 IP 地址数量有限。因此,大多数不运行面向公众的服务器的人都使用网络地址转换。
这将涉及他们使用 LAN 上的计算机(在私有地址空间中具有 IP,例如 192.168.1.2)和具有 LAN IP 地址和 Internet IP 地址的路由器,用于中继它们与 Internet 上的服务器之间的流量。
互联网上的服务器只会看到路由器的面向互联网的 IP 地址。
要查看私有 IP 地址,您必须在 LAN 边界内运行软件。理论上,如果您可以说服用户运行允许签名的 Java 小程序执行,您就可以获取该地址,但即便如此,如果使用多个 IP,您也可能会遇到问题。(例如,我目前有一个环回 IP、一个以太网 IP、一个 Wi-Fi IP,并且正在运行两个虚拟机,我的工作站有几个 IP 供它们连接)。
您的服务器有一个 ip,本地网络有一个外部 ip(这就是您所看到的)。该网络上的所有计算机都有自己的内部 IP。
当计算机连接到您的服务器时,它会通过路由器/交换机的 ip 进行连接。
当您在同一个 LAN 中时,如果您的路由器使用 NAT(大多数都使用 NAT),您将拥有相同的 IPv4 地址。你对此无能为力,这就是它的工作方式。请注意,如果有人使用 IPv6,大多数情况下每台计算机都有自己唯一的 IP 地址。
一点额外的说明:您的路由器正在跟踪传出连接,从而确保每个数据包都到达正确的来源(内部计算机)。也没有办法跟踪它,所以你真的必须处理它。但还要注意,使用“普通 IP 地址”和您正在使用的代码,它是非常独特的。也许网络中的某些用户具有相同的 IP 地址,但它是该特定网络的唯一标识符。另请注意,人们可以拥有动态 IPv4 地址,这意味着 IP 地址经常更改。“静态”IP 地址是留在网络中的地址。这是 ISP 控制的东西。
您的机器可能位于网络代理服务器后面。
在这种情况下,您的 Web 服务器位于本地网络之外。它只能从服务器变量中看到代理服务器 IP 地址。