This function should work as expected
function Get_User_Ipget_user_ip() { $IP// =List false; of server variables that ifmay (getenv('HTTP_CLIENT_IP')) contain the client's IP {address $IP$ip_sources = getenv('HTTP_CLIENT_IP'); }[ else if(getenv('HTTP_X_FORWARDED_FOR')) {'HTTP_CLIENT_IP', $IP = getenv('HTTP_X_FORWARDED_FOR');, } else if(getenv('HTTP_X_FORWARDED')), { 'HTTP_FORWARDED_FOR', $IP = getenv('HTTP_X_FORWARDED'); }'HTTP_FORWARDED', else if(getenv('HTTP_FORWARDED_FOR')) {'REMOTE_ADDR' ]; $IP$ip = getenv('HTTP_FORWARDED_FOR');false; } else// if(getenv('HTTP_FORWARDED')) Iterate over each source { to find a valid IP address $IP =foreach getenv('HTTP_FORWARDED'$ip_sources as $source); { } else if (getenv('REMOTE_ADDR'$source)) { { $IP$ip = getenv('REMOTE_ADDR'$source); } //If HTTP_X_FORWARDED_FORBreak ==the serverloop ipif a valid IP is found if((($IP) && ($IP == getenv('SERVER_ADDR')) && (getenv('REMOTE_ADDR')) || if (!filter_var($IP$ip, FILTER_VALIDATE_IP)))) { $IP = getenv('REMOTE_ADDR'); } if($IP)break; { if(!filter_var($IP, FILTER_VALIDATE_IP))} {} } $IP// =Final false; validation: ensure the IP is not the server's }IP } if ($ip && ($ip else == getenv('SERVER_ADDR') || !filter_var($ip, FILTER_VALIDATE_IP))) { $IP$ip = false; } return $IP;$ip; }