如何在PHP中使用REMOTE_ADDR显示IPv4?

时间:2015-07-05 17:44:40

标签: php ip ipv4

我有一个变量问题:$_SERVER['REMOTE_ADDR']。 我希望他只恢复IPv4格式的IP地址。 它以IPv6格式提取了我几次。

怎么办?

2 个答案:

答案 0 :(得分:9)

$_SERVER['REMOTE_ADDR']始终包含访问者的地址。如果它包含IPv6地址,则访问者使用IPv6并且没有IPv4地址。反之亦然。这些天你必须能够处理这两种情况。

有些访问者只有IPv4,有些访问者只有IPv6,有些访问者只有IPv6。浏览器决定什么是可用的以及它将使用什么,这就是你所能看到的。请注意,如果两个浏览器认为有必要实现良好连接,则它们甚至可能在请求之间在IPv4和IPv6之间切换。

答案 1 :(得分:0)

如果用户通过 IPv6 连接到您的网站,这是不可能的。

如果你真的想知道用户的ipv4,你可以通过两种方式做到:

a) 删除您域的 AAAA 记录,因此它只能通过 ipv4 工作,并且所有用户都将被迫通过 ipv4 连接。但这是一个糟糕的解决方案,因为没有 ipv4 连接的纯 ipv6 用户将无法访问您的站点。

b) 您可以创建一个到另一个域的 ajax 端点,该端点只解析为 ipv4,并从那里获取他们的 IP。