PHP 获取真实IP地址


function getClientIp($type = 0) {
    $type       =  $type ? 1 : 0;
    static $ip  =   NULL;
    if ($ip !== NULL) return $ip[$type];
    if($_SERVER[‘HTTP_X_REAL_IP‘]){//nginx 代理模式下,获取客户端真实IP
        $ip=$_SERVER[‘HTTP_X_REAL_IP‘];
    }elseif (isset($_SERVER[‘HTTP_CLIENT_IP‘])) {//客户端的ip
        $ip     =   $_SERVER[‘HTTP_CLIENT_IP‘];
    }elseif (isset($_SERVER[‘HTTP_X_FORWARDED_FOR‘])) {//浏览当前页面的用户计算机的网关
        $arr    =   explode(‘,‘, $_SERVER[‘HTTP_X_FORWARDED_FOR‘]);
        $pos    =   array_search(‘unknown‘,$arr);
        if(false !== $pos) unset($arr[$pos]);
        $ip     =   trim($arr[0]);
    }elseif (isset($_SERVER[‘REMOTE_ADDR‘])) {
        $ip     =   $_SERVER[‘REMOTE_ADDR‘];//浏览当前页面的用户计算机的ip地址
    }else{
        $ip=$_SERVER[‘REMOTE_ADDR‘];
    }
    // IP地址合法验证
    $long = sprintf("%u",ip2long($ip));
    $ip   = $long ? array($ip, $long) : array(‘0.0.0.0‘, 0);
    return $ip[$type];
}

原文地址:https://www.cnblogs.com/qixidi/p/10202523.html

时间: 2024-08-11 05:46:03

PHP 获取真实IP地址的相关文章

获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址

/** * 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址; * @Title: getIpAddress * @Description: TODO(这里用一句话描述这个方法的作用) * @param @param request * @param @return * @param @throws IOException 参数 * @return String 返回类型 * @throws */ public String getIpAddress(HttpServletR

【转载】JSP 获取真实IP地址的代码

JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的

JSP 获取真实IP地址的代码

[转载]JSP 获取真实IP地址的代码 JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加

C#获取真实IP地址实现方法

通常来说,大家获取用户IP地址常用的方法是: 1 string IpAddress = ""; 2 if((HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null 3 && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty)

C#如何获取真实IP地址

大家获取用户IP地址常用的方法是 C# 代码   复制 string IpAddress = ""; if((HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty) )

ASP如何获取真实IP地址

大家都知道,在ASP中可以使用Request.ServerVariables("REMOTE_ADDR")来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址.要想透过代理服务器取得客户端的真实IP地址,就要使用Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取. 不过要注意的是,并不是每个代理服务器都能用Request.ServerVariable

Java 获取真实IP地址

当项目发布在内网的时候,主机(如IP地址为192.168.10.88)访问局域网服务器的url,如http://192.168.10.142:8080/index/,用request.getRemoteAddr()获取到的主机IP地址是192.168.10.142,而不是真实的IP地址192.168.10.88.为了解决这个问题,可以采用以下方法避免该问题产生. public static String getIpAddress(HttpServletRequest request) {    

获取真实ip地址

前端是nginx,后端是apache,apache默认只能获取前端代理ip的地址,但是有时候需要获取真实地址,这个时候,我们只需要在后端apache上添加rpaf模块,并加以配置即可. wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar -xzvf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6/ /usr/local/apache/bin/apxs  -i -c -n mod_rpaf-

tomcat 获取真实ip地址

tomcat日志记录nginx的真实ip 1.在nginx.conf设置如下 http { set_real_ip_from 10.168.38.0/24;    #通过该指令指定信任的地址,将会被替代为精确的IP地址 real_ip_header X-Forwarded-For;      #这个指令用于设置使用哪个头来替换IP地址.如果使用了X-Forwarded-For,那么该模块将会使用X-Forwarded-For头中的最后一个IP地址来替换前端代理的IP地址. } location