客户端的IP地址也是真实的IP地址

getenv(“REMOTE_ADDR”)用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv(“HTTP_X_FORWARDED_FOR”) 来读取。

但是如果客户端没有通过代理服务器来访问,那么用getenv(“HTTP_X_FORWARDED_FOR”) 取到的值将是空的。

else if(getenv(“HTTP_X_FORWARDED_FOR”))
ip = getenv(“HTTP_X_FORWARDED_FOR”);  
表示如果getenv(“HTTP_X_FORWARDED_FOR”) 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量
ip = getenv(“HTTP_X_FORWARDED_FOR”);  表示如果getenv(“HTTP_X_FORWARDED_FOR”) 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量
ip等于getenv(“HTTP_X_FORWARDED_FOR”) 取到的真实IP值。

如果上面的else if(getenv(“HTTP_X_FORWARDED_FOR”))取得的值为空(即没有使用代理服务器),则不会执行下面的ip = getenv(“HTTP_X_FORWARDED_FOR”);这一行语句。  
这种情况下已经确认客户端没有使用代理服务器,从而通过  
else if(getenv(“REMOTE_ADDR”))
ip = getenv(“HTTP_X_FORWARDED_FOR”);这一行语句。  这种情况下已经确认客户端没有使用代理服务器,从而通过  else if(getenv(“REMOTE_ADDR”))
ip = getenv(“REMOTE_ADDR”);
这两行语句获得客户端的IP地址也是真实的IP地址。

 function getClientIP()
        {
            global $ip;
            if (getenv("HTTP_CLIENT_IP"))
                $ip = getenv("HTTP_CLIENT_IP");
            else if(getenv("HTTP_X_FORWARDED_FOR"))
                $ip = getenv("HTTP_X_FORWARDED_FOR");
            else if(getenv("REMOTE_ADDR"))
                $ip = getenv("REMOTE_ADDR");
            else $ip = "Unknow";
            return $ip;
        }
        echo getClientIP();
    //获取用户真实IP
    function getIp() {
        if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
            $ip = getenv("HTTP_CLIENT_IP");
        else
            if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
                $ip = getenv("HTTP_X_FORWARDED_FOR");
            else
                if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                    $ip = getenv("REMOTE_ADDR");
                else
                    if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                        $ip = $_SERVER['REMOTE_ADDR'];
                    else
                        $ip = "unknown";
        return ($ip);
    }

    echo getIp();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值