在 PHP 中将 IPv6 转换为 IPv4 地址

3 php ip-address ipv4 ipv6

我需要将 IPv6 地址转换为 IPv4 地址。为此,我使用了pedmillon 对相关问题的回答中的代码:

$ipv6 = $_SERVER['REMOTE_ADDR'];
$ipv4 = hexdec(substr($ipv6, 0, 2)). "." . hexdec(substr($ipv6, 2, 2)). "." . hexdec(substr($ipv6, 5, 2)). "." . hexdec(substr($ipv6, 7, 2));
Run Code Online (Sandbox Code Playgroud)

我在我的本地主机中尝试过,::1 被转换为 0.1.0.0。此代码是否正常工作?

我相信它应该显示 127.0.0.1 而不是 0.1.0.0。

dec*_*eze 6

IPv4 和 IPv6 是两种完全不同的互不兼容的网络寻址方案。没有办法从一个“翻译”到另一个。IPv4 地址不对应于特定的 IPv6 地址,反之亦然。互联网上的大多数节点此时仍然只使用 IPv4 地址,一小部分同时运行 IPv4 和 IPv6 双栈,并且极少数可能只使用 IPv6。IPv4 和 IPv6 节点不能直接相互通信。从长远来看,每个人都应该完全转向 IPv6,但这还有很长的路要走。

你能解释一下我如何使用 IPv6 地址来阻止国家/地区吗

与使用 IPv4 阻止特定区域的方式相同:获取将 IP 映射到地理位置的数据库。唯一的区别是您需要找到为IPv6地址执行此操作的数据库或服务。