php 获得用户的真实IP地址

 代码如下 复制代码
/**
 * 获得用户的真实IP地址
 *
 * @return  string
 */
function real_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;
}
时间: 2024-07-31 22:43:37

php 获得用户的真实IP地址的相关文章

ASP中得到用户的真实IP地址

ip地址 这个是以前供职于一家电子商务网站时,由于网站的销售的都是虚拟的东西,比如说游戏充值卡 呀什么的,支持在线支付.久而久之,就免不了有很多人想要来打网站的主意,一些无聊者老是用代理上网来攻击网站,这样子就算是我们知道被人攻击了也拿对方没办法,后来发现ASP中的Request.ServerVariables("HTTP_X_FORWARDED_FOR")可以得到用户的代理IP.如果用户用了代理,那么这个值就不会为空.反之.呵呵 那么,我们就可以在网页加载时检测用户的代理IP是不是为

Nginx阻止用户代理及nginx获取用户真实IP地址

Nginx阻止用户代理 有些时候,需要阻止某些用户代理访问网站,比如ab,wget,curl等等,这就需要使用到$http_user_agent变量. 修改nginx.conf if ($http_user_agent ~* (Wget|ab) ) {    return 403; }   if ($http_user_agent ~* LWP::Simple|BBBike|wget) {             return 403; } 重启nginx # /usr/local/nginx-

获取用户真实ip地址的方法

一.没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示   二.使用透明代理服务器的情况:Transparent Proxies REMOTE_ADDR = 最后一个代理服务器 IP HTTP_VIA = 代理服务器 IP HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.16

获取远程用户真实IP地址

**//// <summary>   /// 最大限度获取远程用户真实IP地址   /// </summary>   /// <returns></returns>   private string GetClientIP()   ...{        if(Request.ServerVariables["HTTP_VIA"]!=null)       ...{           return Request.ServerVaria

asp获取用户真实IP地址的方法

 一般的程序都具备获取用户IP地址的命令,但是我们访问网站有两种一种是我们这种普通用户,一种是使用代理IP上网的用户,下面我来介绍介绍.   在asp中获取用户IP地址我们最简单的获取方法就是使用  代码如下   Request.ServerVariables("REMOTE_ADDR") 但是如果用户使用了代理服务器IP地址就不对了,但我们可通过  代码如下   Request.ServerVariables("REMOTE_ADDR") 结果上面的两个获取IP的

获取用户真实IP地址代码

获取用户真实IP地址代码 Public Function GetIp(getType)   If getType = 0 then    GetIp = Request.ServerVariables("HTTP_X_FORWARDED_FOR")    if GetIp = "" Then getIp = Request.ServerVariables("REMOTE_ADDR")   ElseIf getType = 1 Then    Ge

Tor 浏览器存在严重漏洞 或泄露用户真实 IP 地址

  网络安全公司 We Are Segment 研究人员 Filippo Cavallarin 近期在 FireFox 浏览器中发现一处关键漏洞 -- TorMoil,能够导致用户真实 IP 地址在线泄漏.该漏洞最终也将影响 Tor 浏览器,因为 Tor 服务的隐私保护核心允许用户在线匿名使用 FireFox 浏览器访问网页. 据称,Linux 和 MacOS 系统的 Tor 浏览器普遍受到影响.不过,目前 Tor Project 已将 Tor 浏览器升级至 7.0.9 版本进行补丁修复. 调查

【整理】获取用户真实 ip 地址的 nginx 相关配置

nginx 为实现反向代理的需求增加了一个 ngx_http_proxy_module 模块.其中 proxy_set_header 指令就是该模块需要读取的配置.        HTTP header 中的 Host 含义为所请求的目的主机名.当 nginx 作为反向代理使用,而后端真实 web 服务器设置有类似 防盗链功能 ,或者根据 HTTP header 中的 Host 字段来进行 路由 或 过滤 功能的话,若作为反向代理的 nginx 不重写请求头中的 Host 字段,将会导致请求失败

Java中使用HttpRequest获取用户真实IP地址_JSP编程

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.jb51.net / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110