Logging Visitor IPs with Cloudflare in PHP
When using Cloudflare, it’s important to properly log the original visitor’s IP address. By default, Cloudflare passes the visitor’s IP address through the HTTP_CF_CONNECTING_IP
header, rather than the typical REMOTE_ADDR
. Here’s a simple PHP script modification to handle this correctly.
The PHP Script
Below is the PHP script that checks for the Cloudflare IP header and logs the visitor’s IP address along with a timestamp:
<?php
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$ip = $_SERVER["HTTP_CF_CONNECTING_IP"];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$timestamp = date('Y-m-d H:i:s');
$log_entry = $timestamp . " - " . $ip . "\n";
file_put_contents('traffic.txt', $log_entry, FILE_APPEND);
?>
How It Works
- Check for Cloudflare Header: The script first checks if the
HTTP_CF_CONNECTING_IP
header is set. This header contains the original visitor’s IP address when the request is routed through Cloudflare. - Fallback to REMOTE_ADDR: If the Cloudflare header is not set, the script falls back to using
REMOTE_ADDR
, which is the default way to get the client’s IP address in PHP. - Log the IP with Timestamp: It then creates a log entry that includes the current timestamp and the determined IP address.
- Append to Log File: Finally, it appends this log entry to a file named
traffic.txt
.
沒有評論