当前位置:首页> 编程笔记> PHP 开发
关键字
文章内容
PHP实现透过代理服务器获取得到用户真实IP地址
 
 
修改时间:[2012/06/27 00:00]    阅读次数:[2600]    发表者:[沩筱]
 

在网站设计过程中,怎样取得用户真实IP地址?

就一般的用户而言,只要用PHP的$_SERVER["REMOTE_ADDR"]就可取得。

但是对于使用了代理服务器的用户,得进行特殊处理。

具体代码如下:

//IP地址获取
if(isset($_SERVER["HTTP_CLIENT_IP"])){
    $onlineip = $_SERVER["HTTP_CLIENT_IP"];
}else if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
    foreach (explode(',',$_SERVER["HTTP_X_FORWARDED_FOR"]) as $ip){
        if(strtolower(trim($ip))!="unknown"){
            $onlineip = $ip;
            break;
        }
    }
    $onlineip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}else if(isset($_SERVER["REMOTE_ADDR"])){
    $onlineip = $_SERVER["REMOTE_ADDR"];
}else{
    $onlineip = '0.0.0.0';
}
if(ereg("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}",$onlineip)==false){
    $onlineip = '0.0.0.0';
}//结束IP获取

在整个过程中,对于无法取得的IP都设为了0.0.0.0,这样的设定是为了跟网站的其它地方功能配合。