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