花海博客

记录成长生活点滴ヾ(≧▽≦*)o

PHP 获取真实用户 IP 地址

PHP 获取用户(客户端)真实 IP(IPv4)

  1. 当使用了 CDN、负载均衡 ...后,导致使用 $_SERVER['REMOTE_ADDR'] 获取不到用户的真实 IP
  2. 当用户使用了“匿名代理”,$_SERVER['REMOTE_ADDR'] 将显示代理服务器的IP

因为业务的需要,我们就需要获取用户的真实 IP 进行业务上的操作

<?php
//获取用户真实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();//输出真实 IP
本原创文章未经允许不得转载 | 当前页面:花海博客 » PHP 获取真实用户 IP 地址