[php]代码库
/**
* 获得用户的真实 IP 地址
*
* @return NULL Ambigous unknown>
*/
function get_client_ip(){
static $realip = NULL;
if($realip !== NULL){
return $realip;
}
if(isset($_SERVER)){
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$arr = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
/* 取X-Forwarded-For中第?个非unknown的有效IP字符? */
foreach($arr as $ip){
$ip = trim($ip);
if($ip != 'unknown'){
$realip = $ip;
break;
}
}
}elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
$realip = $_SERVER['HTTP_CLIENT_IP'];
}else{
if(isset($_SERVER['REMOTE_ADDR'])){
$realip = $_SERVER['REMOTE_ADDR'];
}else{
$realip = '0.0.0.0';
}
}
}else{
if(getenv('HTTP_X_FORWARDED_FOR')){
$realip = getenv('HTTP_X_FORWARDED_FOR');
}elseif(getenv('HTTP_CLIENT_IP')){
$realip = getenv('HTTP_CLIENT_IP');
}else{
$realip = getenv('REMOTE_ADDR');
}
}
preg_match("/[\d\.]{7,15}/",$realip,$onlineip);
$realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
return $realip;
}