在 PHP 中获取客户端 IP 地址
在探索获取客户端 IP 地址的方法之前,了解为什么仅使用 $_SERVER[ 是至关重要的'REMOTE_ADDR'] 可能会导致不正确的结果。代理、防火墙或其他中介可以更改原始 IP 地址。
要解决此问题,可以使用以下替代方法:
使用 GETENV()
getenv() 函数允许我们访问环境变量。以下函数使用它:
// Function to get client IP address function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if (getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); //... (Other conditions omitted for brevity) else $ipaddress = 'UNKNOWN'; return $ipaddress; }
使用 $_SERVER
PHP 还提供 $_SERVER 超全局来访问服务器变量。这是使用它的类似实现:
// Function to get client IP address function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; //... (Other conditions omitted for brevity) else $ipaddress = 'UNKNOWN'; return $ipaddress; }
这两个函数都考虑多个服务器变量来获取最准确的可用 IP 地址。他们优先考虑 HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR 等变量,这提供了更高的可靠性。
以上是如何在 PHP 中可靠地获取客户端的 IP 地址?的详细内容。更多信息请关注PHP中文网其他相关文章!