2016-10-08 69 views
1

我开发PHP应用程序和使用$_SERVER['REMOTE_ADDR']为什么IP在本地环境中显示为:: 1?

这对本地环境返回::1(Apache是​​为本地在MacOS塞拉利昂)存储用户的IP地址在数据库中。

我从以前的帖子了解到,这是因为theres是没有“往返”我的ISP。但是有什么方法可以测试它,即确保代码$_SERVER['REMOTE_ADDR']在应用程序部署到活动(非本地)托管环境后将返回正确的地址?

我后让我的“真正的”出站IP地址,如如果我访问了一个网站,如http://www.whatsmyip.org/

我建设也将显示的IP地址,该应用程序将显示什么样的影响用户存储在数据库中之后的用户。因此,作为第二个问题,如果我要编写逻辑来筛选出一个本地IP来显示,我应该过滤掉::1127.0.0.1,还是有其他人?

+0

因为主机不同,所以没有轻拍答案。您使用的是哪种托管服务? – Machavity

回答

0

::1在IPv6中的 “家庭” 地址,就像127.0.0.1在IPv4中

https://en.wikipedia.org/wiki/IPv6_address

:: 1/128 - 回送地址是单播本地主机地址。如果主机中的应用程序将数据包发送到此地址,则IPv6堆栈会将这些数据包循环回到同一个虚拟接口(对应于IPv4中的127.0.0.1/8)。

获取您的“真实”出站地址的问题是您的本地计算机可能不知道这是什么。例如,亚马逊网络服务有一个服务器实际所在的控制平面。因此,您的计算机的IP位于该控制平面内,而不是互联网。您可以为其分配一个外部IP,但您的计算机无法找到该IP。您实际上必须perform other actions(特定于AWS)才能得到它。

相关问题