我无法获取 IPv4 地址,因为 IPv6 似乎自动成为首选。
但是,这非常困难,因为我的 IP 白名单系统仅使用 IPv4。
我使用以下代码来获取客户端的IP:
$client_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
这为某些客户端输出 IPv4,为某些客户端输出 IPv6,但是,大多数客户端都注册了 IPv6,目前,我的代码库都不支持 IPv6 系统,因此这会导致愚蠢的错误和错误,因为有只接受 IPv4 的白名单系统。
如何过滤 IPv6,以便代码只组装 IPv4 而不是 v6?
此外,服务器位于 HTTP/HTTPS 代理后面,因此我需要使用转发标头。
我正在使用以下代码来获取客户端的 IP ...这为某些客户端输出 IPv4,为某些客户端输出 IPv6
代码为所有客户端执行相同的操作:输出它们连接的 IP 地址。如果有人使用 IPv6 连接,这是您可以获得的唯一地址。
假设您有一个系统,假设每个人在挪威都有一个邮政地址。然后有人用英国的地址注册;试图为他们找到一个挪威地址是没有意义的,他们没有。您要么更改系统来处理英国地址,要么阻止他们注册。
您在这里有相同的两个选项: