某些客户端在 $_SERVER['REMOTE_ADDR'] 中带有冒号的“垃圾”IP 地址
Posted
技术标签:
【中文标题】某些客户端在 $_SERVER[\'REMOTE_ADDR\'] 中带有冒号的“垃圾”IP 地址【英文标题】:"Garbage" IP address with colons in $_SERVER['REMOTE_ADDR'] for some clients某些客户端在 $_SERVER['REMOTE_ADDR'] 中带有冒号的“垃圾”IP 地址 【发布时间】:2012-09-16 06:24:57 【问题描述】:我有一个 php 脚本位于一台服务器上,根据每台机器上设置的 cronjobs,该脚本在一天中的不同时间被几台不同的机器访问。我想知道发出请求的机器的 IP,当它由浏览器发出时,以下命令成功执行:
<?php
...
echo $_SERVER['REMOTE_ADDR'];
...
?>
但是,当由 CURL 或我尝试使用的任何其他命令行工具(包括 lynx)制作时,我最终会得到以下垃圾:
2701:5:4a80:7d:2ee:8eff:5e61:801d
根据我所做的调查,这是由于 Apache 没有为从命令行收到的请求填充 $_SERVER
变量。
REMOTE ADDR Issue with Cron Job
任何人都知道如何让命令行请求与$_SERVER
变量配合得很好,还是我应该走另一条路?
【问题讨论】:
【参考方案1】:这不是垃圾,这是正确的远程地址。有人使用 IPv6 访问您的服务器。
【讨论】:
我的错 :-\ 知道如何获取相关的 IPv4 地址吗? @TMan,这是不可能的。 IPv4 和 IPv6 不一定要相互关联。 完美,感谢您的帮助!我猜我必须在客户端计算机上强制 IPv4 才能获得我正在寻找的地址? 检查 the accepted answer of this thread 以获取有关检查 IPv4 与 IPv6 地址的帮助...至少可以说这是一项棘手的业务 对于您现在开发的任何东西,最安全的前进方式是同时支持 IPv4 和 IPv6。您会在某个时间点同时遇到这两种情况,之后添加 IPv6 支持还有很多工作要做...以上是关于某些客户端在 $_SERVER['REMOTE_ADDR'] 中带有冒号的“垃圾”IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
node-request - 获取错误“SSL23_GET_SERVER_HELLO:未知协议”
Parse Server - 某些用户是不是可以编辑其他用户的数据?