我有一個簡單的php腳本,當他們連接到我的網站時記錄用戶的IP地址,我的網站使用CloudFlare。我使用$_SERVER["HTTP_CF_CONNECTING_IP"];
來返回客戶端IPV4地址,以便它可以使用日期和時間登錄到文件中,但有時它會記錄IPV6地址。Cloudflare Header返回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地址。導致此問題的原因是什麼?
其實,我發現一個PHP腳本,將IPV6轉換爲IPV4,它的工作原理,唯一的是,獲取日誌記錄的IPV6地址轉到cloudflare –