在PHP中将IPv6转换为IPv4地址

时间:2017-08-15 22:53:22

标签: php ip-address ipv6 ipv4

我需要将IPv6地址转换为IPv4地址。为此,我使用了来自pedmillon's answer to a related question的代码:

$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));

我在我的localhost中尝试了它,:: 1转换为0.1.0.0。这段代码是否正常工作?

我认为应该显示127.0.0.1而不是0.1.0.0。

1 个答案:

答案 0 :(得分:4)

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

  

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

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

相关问题