//*******************************************
//*******************************************
//********** GET CLIENT IP ADDRESS **********
//*******************************************
//*******************************************
function GetClientIpAddress()
{
//Cloudflare real client IP header
if(!empty($_SERVER["HTTP_CF_CONNECTING_IP"]))
{
return $_SERVER["HTTP_CF_CONNECTING_IP"];
}
//Generic reverse proxy header (first IP in list)
if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
$Parts = explode(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);
$Ip = trim($Parts[0]);
if(filter_var($Ip, FILTER_VALIDATE_IP))
{
return $Ip;
}
}
//Fallback: direct connection
if(!empty($_SERVER["REMOTE_ADDR"]) && filter_var($_SERVER["REMOTE_ADDR"], FILTER_VALIDATE_IP))
{
return $_SERVER["REMOTE_ADDR"];
}
return NULL;
}
