php-Cloudflare标头返回IPV6地址

我有一个简单的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地址的混合
2017年2月23日,星期四19:08:40 0100-99.253.44.66
2017年2月23日,星期四19:10:14 0100-2003:00o1:4hc0:e68c:3113:7l06:2qf1:6e84

而且记录IPV6地址对我没有用,所以我想知道如何解决此问题,以便仅记录IPV4地址.导致此问题的原因是什么?

解决方法:

我的朋友不可能.您的访客不能同时使用其IPv4或IPv6呼叫服务器.他使用的女巫IP取决于他的网络配置和您的网络配置.

未经他的许可,您无法挖掘他的信息.

上一篇:certbot 调用cloudflare api申请证书


下一篇:C#对Dictionary的按Value排序