网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#1 2014-12-16 14:50:18

admin
管理员

php 如何获得 ip 远程的ip

示例代码

/**
 * 
 * @param type $b 如果说false 返回的 字符串 ip, 如果是 true 返回的值 数字 ip
 * 默认返回 字符串ip
 */

function get_ip($b = false) {
    $ans = '';
    if(getenv('HTTP_CLIENT_IP')) {
        $ans = getenv('HTTP_CLIENT_IP');
    } elseif ( getenv('HTTP_X_FORWARDED_FOR')) {
        $ans = getenv('HTTP_X_FORWARDED_FOR');
    } elseif ( getenv('REMOTE_ADDR')) {
        $ans = getenv('REMOTE_ADDR');
    } else {
        $ans = '127.0.0.1';
    }
    
    if($b) {
        return ip2long($ans);
    } else {
        return $ans;
    }
}

为什么这么写, 这个写法是按照 http 协议来写的。 

如果浏览器和服务器中间有中间有代理服务器。

比如服务器的模型是 

浏览器用过ngxin反向代理访问apache.

用户把请求给 nginx , nginx 从 apache 哪里获得内容, 返回给 nginx ,nginx 把内容最后给用户。

这样http的头部信息,就会有对个ip信息, 比如 HTTP_X_FORWADEED_FOR。

多个ip信息有个优先级。



ipbbs.net

离线

页脚

Powered by FluxBB