php获取真实的IP地址

时间:2013-02-07 13:35:39

标签: php ip

嗯, $_SERVER['REMOTE_ADDR']WhatIsMyIP向我显示了两个不同的IP地址。我想抓住IP地址,就像它出现在“whatismyip”上一样。

3 个答案:

答案 0 :(得分:3)

一些网络101:

    +--+
    |  |
    +--+
whatismyip.com                 +--+
108.162.207.135         +----- |  |
                        |      +--+
     |       +--+       |  your computer
     +------ |  | ------+  10.127.254.21
             +--+       |
          NAT router    |      +--+
          85.89.XX.XX   +----- |  |
                               +--+
                          your web server
                           10.127.254.22

如果这是您的网络设置,当{2}进行通信时,your web server会将10.127.254.21视为your computer的IP。这是因为要将数据从your computer路由到your web server,数据包只需要直接在两者之间的线路上传输。如果两者是同一台机器,它甚至不需要这样做。

如果您尝试从whatismyip.com访问{p} 85.89.XX.XX,{p> your computer将会看到NAT router作为原始IP地址,因为数据在{{1}的路上经过了your computerwhatismyip.com。 NAT路由器使用NAT技术代理请求,在此过程中隐藏您的实际 IP地址。要whatismyip.com,请求似乎来自路由器,而不是your computer

希望从85.89.XX.XX $_SERVER['REMOTE_ADDR']获取your web server的答案是相当武断的。它不是“你真正的IP”,它是路由器的IP,它与your computeryour web server之间的通信没有任何关系。

答案 1 :(得分:1)

该网站显示您的全球IP地址(您用来连接互联网的地址)。 REMOTE_ADDR显示客户端地址,我猜是你自己的机器,根本不通过互联网。这就是为什么它会向您显示本地IP地址,而不是全局IP地址。

底线:您使用全局地址请求远程服务器(whatismyip.com),但请求本地服务器使用您的本地地址(如果它位于同一台计算机上则为127.0.0.1)。

答案 2 :(得分:0)

当您运行本地Web服务器并使用$_SERVER['REMOTE_ADDR']时,如果您在自己的计算机上,它将在本地网络(如果在另一台计算机上)或127.0.0.1(A.K.A。localhost)上返回您的地址。而“我的IP是什么”将查看您的网络到Internet的IP地址。我希望这有助于澄清正在发生的事情。

无论如何,$_SERVER['REMOTE_ADDR']在正常的网络服务器上运行“live”时应该可以正常工作,所以如果这是你打算做的,你就不用担心了。