PHP function REMOTE_ADDR is not working

$_SERVER['REMOTE_ADDR'] is actually used for getting the IP address from which the user is viewing the current page. But if user is browsing from a company or cafe we will get gateway ip address only. In such situations we can use the following functions

function getUserIP()
{
$ip = "";

if (isset($_SERVER))
{
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
}
else {
if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$ip = getenv( 'HTTP_X_FORWARDED_FOR' );
} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$ip = getenv( 'HTTP_CLIENT_IP' );
} else {
$ip = getenv( 'REMOTE_ADDR' );
}
}
return $ip;
}