Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php获取真实IP地址_Php_Ip - Fatal编程技术网

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地址对我来说是无用的。