在 PHP 中读取 ipv6 而不是 IPv4
reading ipv6 instead of IPv4 in PHP
当我的 PHP 网站读取我的访问者 IP 地址时,它以 IPv4 格式显示。
但是,当我访问第三方站点(例如 https://www.whatismyip.com/)时,我的访问者地址显示的是 IPv6 格式。
如何让我的 PHP 网站成为 read/listen for/display 访问者 IP 地址的较长 IPv6 格式?
如果您获得 IPv6 格式的 IPv4 地址,这可能是因为您的网络服务器正在侦听单个 IPv6 接口上的所有请求(IPv4 和 IPv6)。在这种情况下,当它读取对等地址时,它总是会获得一个 IPv6 格式的地址,从而通过在 ::ffff: 之前映射到 IPv4 地址来映射 IPv4 地址。
所以这是您的网络服务器的配置,而不是 PHP。
如果您想要这种格式的 IPv4 地址,您可以在 IPv4 地址前加上固定字符串“::ffff:”。但是你为什么要这样做?
此外,您将始终获得用于连接到服务器的 IP 版本的 IP 地址。所以当你想知道为什么你没有得到一个真实的(不是映射的)IPv6 地址时,这可能是因为你的浏览器使用 IPv4 连接到服务器。要么是因为您的服务器无法侦听 IPv6 请求,要么是因为其 IPv6 连接比 IPv4 连接慢得多。在这种情况下,浏览器通常会回退到使用 IPv4 来为用户提供更好的性能。
当我的 PHP 网站读取我的访问者 IP 地址时,它以 IPv4 格式显示。
但是,当我访问第三方站点(例如 https://www.whatismyip.com/)时,我的访问者地址显示的是 IPv6 格式。
如何让我的 PHP 网站成为 read/listen for/display 访问者 IP 地址的较长 IPv6 格式?
如果您获得 IPv6 格式的 IPv4 地址,这可能是因为您的网络服务器正在侦听单个 IPv6 接口上的所有请求(IPv4 和 IPv6)。在这种情况下,当它读取对等地址时,它总是会获得一个 IPv6 格式的地址,从而通过在 ::ffff: 之前映射到 IPv4 地址来映射 IPv4 地址。
所以这是您的网络服务器的配置,而不是 PHP。
如果您想要这种格式的 IPv4 地址,您可以在 IPv4 地址前加上固定字符串“::ffff:”。但是你为什么要这样做?
此外,您将始终获得用于连接到服务器的 IP 版本的 IP 地址。所以当你想知道为什么你没有得到一个真实的(不是映射的)IPv6 地址时,这可能是因为你的浏览器使用 IPv4 连接到服务器。要么是因为您的服务器无法侦听 IPv6 请求,要么是因为其 IPv6 连接比 IPv4 连接慢得多。在这种情况下,浏览器通常会回退到使用 IPv4 来为用户提供更好的性能。