// Function that decides to return as remote address the HTTP_X_FORWARDED_FOR (if exists) for cases of reverse proxy
function Actual_REMOTE_ADDR()
{
// DEFINE HERE THE IP ADDRESSE(s) OF REVERSE PROXY(s)
$reverse_proxy_addresses = array('15.14.13.1');
$client_address = $_SERVER['REMOTE_ADDR'];
// Check if resolved REMOTE_ADDR is one of the reverse proxy address
$revpr_found = in_array($client_address, $reverse_proxy_addresses);
// If so, try to get the HTTP_X_FORWARDED_FOR value of the request's header
if($revpr_found)
{
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] !== "")
{
$client_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
$client_arr = explode(",", $client_address);
// It happens, for some networks, if app is behind reverse proxy, $client_address to have 2 values
// Must get the first one only
if(count($client_arr) > 1)
$client_address = $client_arr[0];
}
}
return $client_address;
}
Comments