方法一:
//该函数将获取用户的真实 IP 地址,即便他使用代理服务器。 function getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } echo getRealIpAddr();
方法二:
/**
* 获取用户的真实ip地址
* @return string
*/
function get_client_ip(){
$headers = array('HTTP_X_REAL_FORWARDED_FOR', 'HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'REMOTE_ADDR');
foreach ($headers as $h){
$ip = $_SERVER[$h];
// 有些ip可能隐匿,即为unknown
if ( isset($ip) && strcasecmp($ip, 'unknown') ){
break;
}
}
if( $ip ){
// 可能通过多个代理,其中第一个为真实ip地址
list($ip) = explode(', ', $ip, 2);
}
/* 如果是服务器自身访问,获取服务器的ip地址(该地址可能是局域网ip)
if ('127.0.0.1' == $ip){
$ip = $_SERVER['SERVER_ADDR'];
}
*/
return $ip;
}
echo get_client_ip();
方法三:
function getIp(){$ip = ''; 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']; } $ip_arr = explode(',', $ip); return $ip_arr[0];}echo getIp();