当使用PHP编写Web应用程序时,有时需要获取访问者的真实IP地址。然而,由于代理服务器和负载均衡等因素的存在,直接使用$_SERVER['REMOTE_ADDR']
可能无法获取到真实的IP地址。下面是获取本机真实IP地址的示例代码:
function getRealIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
// 检查是否是通过代理服务器访问
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// 检查是否是通过负载均衡服务器访问
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
// 直接获取IP地址
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$realIP = getRealIP();
echo \"您的真实IP地址是:\" . $realIP;
上述代码定义了一个名为getRealIP()
的函数,该函数根据不同的情况获取真实的IP地址。首先,它检查$_SERVER['HTTP_CLIENT_IP']
是否存在,如果存在,则说明访问是通过代理服务器进行的,因此将该值赋给$ip
变量。接下来,它检查$_SERVER['HTTP_X_FORWARDED_FOR']
是否存在,如果存在,则说明访问是通过负载均衡服务器进行的,因此将该值赋给$ip
变量。最后,如果以上两个条件都不满足,则直接使用$_SERVER['REMOTE_ADDR']
获取IP地址。
以下是两个示例说明:
示例1:
假设访问者通过代理服务器访问网站,代理服务器的IP地址是192.168.0.100
,而访问者的真实IP地址是203.0.113.45
。使用上述代码,将返回真实的IP地址203.0.113.45
。
示例2:
假设访问者通过负载均衡服务器访问网站,负载均衡服务器的IP地址是10.0.0.1
,而访问者的真实IP地址是172.16.0.100
。使用上述代码,将返回真实的IP地址172.16.0.100
。
通过使用上述代码,您可以获取访问者的真实IP地址,无论是通过代理服务器还是负载均衡服务器访问。请注意,由于网络环境的复杂性,无法保证100%准确性,但这是一种常用的方法来获取真实IP地址。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php获取本机真实IP地址实例代码 - Python技术站