嗯,
$_SERVER['REMOTE_ADDR']
和WhatIsMyIP向我显示了两个不同的IP地址。我想抓住IP地址,就像它出现在“whatismyip”上一样。
答案 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 computer
到whatismyip.com
。 NAT路由器使用NAT技术代理请求,在此过程中隐藏您的实际 IP地址。要whatismyip.com
,请求似乎来自路由器,而不是your computer
。
希望从85.89.XX.XX
$_SERVER['REMOTE_ADDR']
获取your web server
的答案是相当武断的。它不是“你真正的IP”,它是路由器的IP,它与your computer
和your 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”时应该可以正常工作,所以如果这是你打算做的,你就不用担心了。