php获取真实IP地址
嗯,php获取真实IP地址,php,ip,Php,Ip,嗯, $\u服务器['REMOTE\u ADDR']并显示两个不同的IP地址。我想捕捉IP地址,就像它在“whatismyip”上显示的那样。该站点正在显示您的全局IP地址(您用于连接到internet的IP地址)REMOTE_ADDR显示客户端地址,我猜它是您自己的机器,根本不通过互联网。这就是为什么它显示的是本地ip地址,而不是全局ip地址 底线:您使用全局地址请求远程服务器(whatismyip.com),但使用本地地址请求本地服务器(127.0.0.1,如果它在同一台机器上)。当您运行本
$\u服务器['REMOTE\u ADDR']
并显示两个不同的IP地址。我想捕捉IP地址,就像它在“whatismyip”上显示的那样。该站点正在显示您的全局IP地址(您用于连接到internet的IP地址)REMOTE_ADDR
显示客户端地址,我猜它是您自己的机器,根本不通过互联网。这就是为什么它显示的是本地ip地址,而不是全局ip地址
底线:您使用全局地址请求远程服务器(whatismyip.com),但使用本地地址请求本地服务器(127.0.0.1,如果它在同一台机器上)。当您运行本地web服务器并使用
$\u server['remote\u ADDR']
时,它将在本地网络上返回您的地址(如果在另一台计算机上)或127.0.0.1(也称为本地主机),如果在您自己的计算机上。而“What Is My IP”将查看您网络到Internet的IP地址。我希望这有助于澄清发生了什么
无论如何,$\u SERVER['REMOTE\u ADDR']
在适当的web服务器上运行“live”时应该可以正常工作,因此如果您正打算这样做,您不必担心。一些网络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
如果这是您的网络设置,您的web服务器
将看到10.127.254.21
作为您的计算机
进行通信时的IP。这是因为要将数据从您的计算机
路由到您的web服务器
,数据包只需直接在两者之间的线路上传输。如果这两个是ame机器,它甚至不需要这样做
whatismyip.com
如果您试图从您的计算机
访问它,那么它将把85.89.XX.XX
视为原始IP地址,因为数据在从您的计算机
到whatismyip.com
的过程中通过NAT路由器
。NAT路由器使用NAT技术代理请求,隐藏您的数据进程中的实际IP地址。到whatismyip.com
它看起来像是来自路由器的请求,而不是您的您的计算机
想要从
您的web服务器上的$\u服务器['REMOTE\u ADDR']
获取85.89.XX.XX
作为答案是相当随意的。这不是“您真正的IP”,它是路由器的IP,实际上与您的计算机
和您的web服务器
之间的通信没有任何关系。具体在什么情况下?您是否在自己的本地主机上进行测试?我们可以看到您使用的一些代码吗?$\u server[“REMOTE\u ADDR”]
应该会给出同样的结果,除非你联系内部网络上的服务器?检查一下你是否在路由器后面?如果你是NAT,就无法从NAT内部确定你的真实IP地址,我不相信。至少我不认为PHP有任何方法可以做到这一点。我相信唯一的方法是从外部发现l、 如whatismyip.com。您可能可以点击该页面并解析HTML以获得它。如果您看到的是192.168.x.x(假设为正常的家庭地址方案),则您看到的是您的本地地址,而whatismyip显示的是您的全局地址(来自ISP)addressok我明白了,但如果您转发端口,然后尝试通过网络的“外部”连接(或获取其他连接)到您的web服务器,是否有机会通过php?@MacUmatik捕获全局IP地址IP地址;然后yes.hmm…也许应该问一个不同的问题…我需要创建一个包含登录时间、用户名和IP地址的数组,并将其放入数据库,因此使用$\u SERVER['REMOTE\u ADDR']是无用的,因为它会显示内部IP地址。那么我如何才能获得真实用户IP的信息?@MacUmatik如果其他人连接到您的web服务器,它不会显示为127.0.0.1。它只会显示为127.0.0.1,因为您的计算机正在运行web服务器。如果您将代码放在生产web服务器上,当它准备好时,它会显示为127.0.1这不是问题。@MacUmatik我希望这有帮助。:)不。。。我使用外部服务器。我必须知道登录用户的原始IP地址--;;;“外部服务器”到底是什么意思?您的网络拓扑是什么样子的?但底线是:您可以获得$\u服务器['REMOTE\u ADDR']
中的内容。这就是请求来自的IP。这可能是也可能不是机器的“实际”地址(例如,路由器/代理地址与本地地址),但这是您将获得的唯一地址。如果你有一些不符合这个答案的具体情况,请更详细地描述你的情况。。。这是典型的合成。我在remonte服务器上工作,为了安全起见,我必须收集登录用户的信息:登录时间、登录名和IP地址,所以内部IP地址对我来说是无用的。