我有一个简单的php脚本,当用户连接到我的网站时记录他们的IP地址,我的网站使用CloudFlare。我使用$_SERVER["HTTP_CF_CONNECTING_IP"];
来返回客户端的IPv4地址,以便将其记录到带有日期和时间的文件中,但有时它会记录IPv6地址。
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
$filename = 'loggedips.txt';
$myfile = fopen($filename, "r") or die("Unable to log IP!");
$string = fread($myfile,filesize($filename)).date(DATE_RFC2822)." -- $ip\r\n";
$fp = fopen($filename, 'w') or die("Unable to log IP!");
fwrite($fp, $string);
fclose($fp);
在我的日志中,我看到了混合使用IPv4地址和IPv6地址的情况。
Thu, 23 Feb 2017 19:08:40 +0100 -- 99.253.44.66
Thu, 23 Feb 2017 19:10:14 +0100 -- 2003:00o1:4hc0:e68c:3113:7l06:2qf1:6e84
记录IPv6地址对我没有用处,所以我想知道如何解决这个问题,以便只记录IPv4地址。什么原因导致了这个问题?