某些客户端的$ _​​SERVER ['REMOTE_ADDR']中带有冒号的"垃圾"IP地址

TMa*_*Man 6 php cron ip-address ipv6

我有一个PHP脚本坐在服务器上,根据每台机器上设置的cronjobs,在一天中的不同时间被几台不同的机器命中.我想知道发出请求的机器的IP以及何时由浏览器生成,以下执行成功:

<?php
  ...
  echo $_SERVER['REMOTE_ADDR'];
  ...
?>
Run Code Online (Sandbox Code Playgroud)

但是,当我使用CURL或我尝试使用的任何其他命令行工具(包括lynx)时,我最终得到以下垃圾:

2701:5:4a80:7d:2ee:8eff:5e61:801d

从我所做的调查来看,这是Apache没有$_SERVER为从命令行发出的请求填充变量的结果.

Cron Job的REMOTE ADDR问题

任何人都知道一种方法来获取命令行请求以使用该$_SERVER变量,或者我应该沿着另一条路线走?

Bra*_*rad 10

这不是垃圾,这是正确的远程地址.有人使用IPv6访问您的服务器.

  • 检查[此线程的接受答案](http://stackoverflow.com/questions/1555591/how-to-convert-an-address-from-ipv4-to-ipv6)以获取有关检查IPv4与IPv6地址的帮助.至少说这是一件棘手的事 (2认同)
  • 对于您现在开发的任何内容,最安全的方法是同时支持 IPv4 和 IPv6。您将在某个时间点同时遇到它们,而之后添加 IPv6 支持则需要更多的工作…… (2认同)