PHP获取客户端真实IP

来源:互联网 发布:手机统计软件 编辑:程序博客网 时间:2024/05/16 06:21
function getRealIp(){    static $realip = null;    if ($realip !== null) {        return $realip;    }    if(isset($_SERVER)){        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {            $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];        } else if (isset($_SERVER['HTTP_CLIENT_IP'])) {            $realip = $_SERVER['HTTP_CLIENT_IP'];        } else {            $realip = $_SERVER['REMOTE_ADDR'];        }    } else {        if(getenv('HTTP_X_FORWARDED_FOR')){            $realip = getenv('HTTP_X_FORWARDED_FOR');        } else if (getenv('HTTP_CLIENT_IP')) {            $realip = getenv('HTTP_CLIENT_IP');        } else {            $realip = getenv('REMOTE_ADDR');        }    }     // 处理多层代理的情况    if (false !== strpos($realip, ',')) {         $realip = reset(explode(',', $realip));     }      // IP地址合法验证     $realip = filter_var($realip, FILTER_VALIDATE_IP, null);     if (false === $realip) {         return '0.0.0.0';     }    return $realip;}