如何在 PHP 中仅使用 REMOTE_ADDR 显示 IPv4?
How show IPv4 only with REMOTE_ADDR in PHP?
我有一个关于变量的问题:$_SERVER['REMOTE_ADDR']
。
我希望他只恢复 IPv4 格式的 IP 地址。
它以 IPv6 格式提取了我几次。
怎么办?
$_SERVER['REMOTE_ADDR']
始终包含访问者的地址。如果它包含 IPv6 地址,则访问者使用了 IPv6 而没有 IPv4 地址。当然反之亦然。现在你必须能够同时处理这两者。
有些访问者只有 IPv4,有些只有 IPv6,有些则两者都有。浏览器决定什么是可用的以及它将使用什么,这就是你所看到的。请注意,如果浏览器认为有必要获得良好的连接性,那么它甚至可能会在请求之间切换 IPv4 和 IPv6。
如果用户通过 IPv6 连接到您的站点,则不可能。
如果你真的想知道用户的ipv4,你可以通过两种方式做到:
a) 删除您域的 AAAA 记录,因此它只能通过 ipv4 工作,所有用户将被强制通过 ipv4 连接。但这是一个糟糕的解决方案,因为没有 ipv4 连接的仅 ipv6 用户将无法访问您的站点。
b) 您可以创建一个 ajax 端点到另一个只解析为 ipv4 的域,并从那里获取他们的 IP。
我有一个关于变量的问题:$_SERVER['REMOTE_ADDR']
。
我希望他只恢复 IPv4 格式的 IP 地址。
它以 IPv6 格式提取了我几次。
怎么办?
$_SERVER['REMOTE_ADDR']
始终包含访问者的地址。如果它包含 IPv6 地址,则访问者使用了 IPv6 而没有 IPv4 地址。当然反之亦然。现在你必须能够同时处理这两者。
有些访问者只有 IPv4,有些只有 IPv6,有些则两者都有。浏览器决定什么是可用的以及它将使用什么,这就是你所看到的。请注意,如果浏览器认为有必要获得良好的连接性,那么它甚至可能会在请求之间切换 IPv4 和 IPv6。
如果用户通过 IPv6 连接到您的站点,则不可能。
如果你真的想知道用户的ipv4,你可以通过两种方式做到:
a) 删除您域的 AAAA 记录,因此它只能通过 ipv4 工作,所有用户将被强制通过 ipv4 连接。但这是一个糟糕的解决方案,因为没有 ipv4 连接的仅 ipv6 用户将无法访问您的站点。
b) 您可以创建一个 ajax 端点到另一个只解析为 ipv4 的域,并从那里获取他们的 IP。