当使用了 CDN、负载均衡 …后,导致使用 $_SERVER[‘REMOTE_ADDR’] 获取不到用户的真实 IP
当用户使用了“匿名代理”,$_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