我正在开发一个PHP应用程序,并使用以下命令将用户的IP地址存储在数据库中 $_SERVER['REMOTE_ADDR']
这将::1
在本地环境中返回(Apache在macOS Sierra上本地设置)。
我从以前的帖子中了解到这是因为没有到我的ISP的“往返”。但是,是否有任何测试方法,例如,确保$_SERVER['REMOTE_ADDR']
将应用程序部署到实时(非本地)托管环境后,代码将返回正确的地址?
我所追求的效果是获得“真正的”出站IP地址,就像我访问http://www.whatsmyip.org/这样的网站时所显示的那样
将我正在构建的应用程序存储在数据库中后,它还将显示用户的IP地址。因此,作为第二个问题,如果我要编写逻辑以过滤掉显示的本地IP,我应该过滤掉::1
和127.0.0.1
,还是还有其他过滤器?
::1
是您在IPv6中的“家庭”地址,就像127.0.0.1
在IPv4中一样
https://zh.wikipedia.org/wiki/IPv6_address
:: 1/128 —环回地址是单播本地主机地址。如果主机中的应用程序将数据包发送到该地址,则IPv6堆栈会将这些数据包循环回同一虚拟接口上(对应于IPv4中的127.0.0.1/8)。
获取“真实”出站地址的问题是您的本地计算机可能不知道这是什么。例如,Amazon Web Services有一个服务器实际上位于其中的控制平面。因此,您计算机的IP在该控制平面内,而不是Internet内。您可以为其分配一个外部IP,但是您的计算机没有内部方法可以找到该IP。实际上,您必须执行其他操作(特定于AWS)才能获取它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句