PHP $_SERVER | Description |
---|
$_SERVER['REMOTE_ADDR'] | Most reliable way to get client IP address in PHP |
$_SERVER'[HTTP_CLIENT_IP'] | This when user is behind proxy |
$_SERVER['HTTP_X_FORWARDED_FOR'] | This when user is behind proxy |
$_SERVER['HTTP_X_FORWARDED'] | This when user is behind proxy |
$_SERVER['HTTP_FORWARDED_FOR' | This when user is behind proxy |
$_SERVER['HTTP_FORWARDED'] | This when user is behind proxy |
$_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] | This when user is behind proxy |
<?php
echo GetClientIP(true);
function GetClientIP($validate = False){
$ipkeys = array(
'REMOTE_ADDR',
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP'
);
/*
now we check each key against $_SERVER if contain such value
*/
$ip = array();
foreach($ipkeys as $keyword){
if( isset($_SERVER[$keyword]) ){
if($validate){
if( ValidatePublicIP($_SERVER[$keyword]) ){
$ip[] = $_SERVER[$keyword];
}
}else{
$ip[] = $_SERVER[$keyword];
}
}
}
$ip = ( empty($ip) ? 'Unknown' : implode(", ", $ip) );
return $ip;
}
function ValidatePublicIP($ip){
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
return true;
}
else {
return false;
}
}
?>