📅  最后修改于: 2023-12-03 15:33:39.062000             🧑  作者: Mango
在 PHP 中获取客户端的 IP 地址可以通过 $_SERVER
超全局变量来实现。下面分别介绍几种方法。
/**
* 获取客户端 IP 地址
* @return string
*/
function get_client_ip_address() {
$ip_address = '';
if(isset($_SERVER['REMOTE_ADDR'])) {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}
这种方式是最常用的方式,但是有一定的局限性。因为有些代理服务器的存在,这种方式无法获取真实的客户端 IP 地址,而是会获取到代理服务器的 IP 地址。因此,如果需要获取准确的客户端 IP 地址,需要使用其他方法。
/**
* 获取客户端 IP 地址
* @return string
*/
function get_client_ip_address() {
$ip_address = '';
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip_list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip_address = trim(end($ip_list));
} else if(isset($_SERVER['REMOTE_ADDR'])) {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}
这种方式通过检查 HTTP 头中的 HTTP_X_FORWARDED_FOR
变量可以获取客户端的真实 IP 地址。这个变量通常是由代理服务器添加的,并且可以显示客户端的 IP 地址和代理服务器的 IP 地址。这种方式可以解决使用 HTTP_X_FORWARDED_FOR 变量无法解决的代理服务器的问题,但是在某些情况下,这种方式仍然无法获得准确的 IP 地址。
/**
* 获取客户端 IP 地址
* @return string
*/
function get_client_ip_address() {
$ip_address = '';
if(isset($_SERVER['REMOTE_HOST'])) {
$ip_address = $_SERVER['REMOTE_HOST'];
} else if(isset($_SERVER['REMOTE_ADDR'])) {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}
这种方式使用 REMOTE_HOST
变量来获取客户端的 IP 地址。这个变量通常是由 Web 服务器设置,但是在某些情况下,它可能为空。
在使用这些方法获取 IP 地址时,需要注意以下几点: