使用 PHP 检索用户的 IP 地址时,有多个服务器变量可供考虑。虽然没有一种方法是万无一失的,但本文探讨了基于这些变量的最准确方法。
背景
$_SERVER 数组包含许多可能提供 IP 地址信息的标头。然而,这些标头的可靠性和准确性可能会根据代理配置和网络拓扑而有所不同。
常用方法
传统上,使用以下序列来获取用户的 IP 地址:
优化方法
为了提高准确性和性能,此序列已优化如下:
function get_ip_address() { $headers = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR']; foreach ($headers as $header) { if (isset($_SERVER[$header]) && ($ip = trim($_SERVER[$header]))) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { return $ip; } } } return null; }
注意
虽然这方法将检索大多数代理背后的用户的 IP 地址,需要注意的是:
附加说明
以上是PHP中如何获取最准确的用户IP地址?的详细内容。更多信息请关注PHP中文网其他相关文章!