先来了解一个变量的含义:
$_SERVER["REMOTE_ADDR"]:浏览当前页面的用户计算机的ip地址
$_SERVER["HTTP_CLIENT_IP"]:客户端的ip
$_SERVER["HTTP_X_FORWARDED_FOR"]:浏览当前页面的用户计算机的网关
$_SERVER["HTTP_X_REAL_IP"]:nginx 代理模式下,获取客户端真实IP
/** * 获取客户端IP地址 */function real_ip(){ $ip = $_SERVER["REMOTE_ADDR"]; if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && preg_match_all("#d{1,3}.d{1,3}.d{1,3}.d{1,3}#s", $_SERVER["HTTP_X_FORWARDED_FOR"], $matches)) { foreach ($matches[0] AS $xip) { if (!preg_match("#^(10|172.16|192.168).#", $xip)) { $ip = $xip; break; } } } elseif (isset($_SERVER["HTTP_CLIENT_IP"]) && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } elseif (isset($_SERVER["HTTP_CF_CONNECTING_IP"]) && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_CF_CONNECTING_IP"])) { $ip = $_SERVER["HTTP_CF_CONNECTING_IP"]; } elseif (isset($_SERVER["HTTP_X_REAL_IP"]) && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_X_REAL_IP"])) { $ip = $_SERVER["HTTP_X_REAL_IP"]; } return $ip;}
总结
以上所述是小编给大家介绍的PHP 获取客户端 IP 地址的方法实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!