$ip = "Unknown";
// Check for Fastly's specific header
if (!empty($_SERVER['HTTP_FASTLY_CLIENT_IP']) && filter_var($_SERVER['HTTP_FASTLY_CLIENT_IP'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_FASTLY_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) {
// Check if the IP is set by HTTP_CLIENT_IP
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// Check for IPs passed through proxies in X-Forwarded-For
// This can contain multiple IPs; take the first one
$forwarded_ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = trim($forwarded_ips[0]);
} elseif (!empty($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP)) {
// Check if the IP is set by HTTP_X_REAL_IP
$ip = $_SERVER['HTTP_X_REAL_IP'];
} elseif (!empty($_SERVER['REMOTE_ADDR']) && filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) {
// Fallback to REMOTE_ADDR if no other IP is found
$ip = $_SERVER['REMOTE_ADDR'];
}
© 2023 Quttera Ltd. All rights reserved.