PHP建站技术文档

PHP获取真实IP的方法是什么
  • 作者:合肥PHP建站
  • 发表时间:2023-09-15 10:11:12
  • 来源:合肥PHP建站

在 PHP 中,有几种方法可以获取客户端的真实 IP 地址。


使用 $_SERVER['REMOTE_ADDR']:这是最常用的方法之一,它通过访问 $_SERVER 超全局数组中的 'REMOTE_ADDR' 键来获取客户端的 IP 地址。然而,这种方法并不总是可靠的,因为客户端的 IP 地址可能会被代理服务器伪造或匿名。


$ip = $_SERVER['REMOTE_ADDR'];

使用 $_SERVER['HTTP_X_FORWARDED_FOR']:这个 HTTP 头部包含了代理服务器发送的原始客户端 IP 地址。然而,它也可以被伪造或匿名,因此不能完全信任。


$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

使用 $_SERVER['HTTP_CLIENT_IP']:这个 HTTP 头部包含了客户端的真实 IP 地址,但只有在代理服务器正确配置的情况下才会存在。


$ip = $_SERVER['HTTP_CLIENT_IP'];

检查 $_SERVER['REMOTE_ADDR'] 和 $_SERVER['HTTP_X_FORWARDED_FOR']:结合使用这两个值,可以增加获取真实 IP 地址的可靠性。首先检查 $_SERVER['REMOTE_ADDR'],如果它是真实的 IP 地址(例如不是 "unknown" 或 "0.0.0.0"),则使用它;否则,尝试使用 $_SERVER['HTTP_X_FORWARDED_FOR']。


$ip = $_SERVER['REMOTE_ADDR'];

if ($ip === 'unknown' || $ip === '0.0.0.0') {

    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

}

请注意,由于客户端环境和代理服务器的多样性,无法保证获取到绝对真实的 IP 地址。因此,对于安全相关的操作,建议使用其他更可靠的方法来验证用户的身份和授权。