在PHP中将IPv6转换为IPv4地址

在PHP中将IPv6转换为IPv4地址,php,ip-address,ipv6,ipv4,Php,Ip Address,Ipv6,Ipv4,我需要将IPv6地址转换为IPv4地址。为此,我使用了以下代码: 我在本地主机中尝试了它,并将::1转换为0.1.0.0。这个代码正确吗 我认为它应该显示127.0.0.1而不是0.1.0.0。IPv4和IPv6是两种完全不同的互不兼容的网络寻址方案。没有办法从一个“翻译”到另一个。IPv4地址与特定IPv6地址不对应,反之亦然。目前,互联网上的绝大多数节点仍然只使用IPv4地址,有一小部分节点同时运行IPv4和IPv6的双栈,而只有极少数节点使用IPv6。IPv4和IPv6节点不能直接相互通信

我需要将IPv6地址转换为IPv4地址。为此,我使用了以下代码:

我在本地主机中尝试了它,并将::1转换为0.1.0.0。这个代码正确吗


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

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


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

IPv6地址无法转换为IPv4地址。这就像想把苹果变成香蕉。首先,有340282366920938463463374607431768211456个可能的IPv6地址,而只有4294967296个可能的IPv4地址。让我来提炼一下:这就像想把几个星系的苹果变成一个香蕉。嗯。。那么,如果我强制我的Apache使用IPv4地址,这将是最好的解决方案吗?未来的解决方案将是支持ipv6。为了简化转换,如果您不想同时处理这两个系统,您可以告诉您的服务器您希望ipv4地址映射到ipv6地址空间,然后从那里您就可以使用ipv6。如果这是一个经得起未来考验的解决方案,那么您可以解释如何使用ipv6地址阻止此链接上的国家/地区。我已经问了这个问题,如果您能回答我如何使我的代码与IPv6一起工作,并且是未来的证明,我将非常高兴。请查看。您找到的脚本根本不支持IPv6。已经过时了。从IPv6中猜出国家是非常困难的,在很多情况下是不可能的。IPv6分配的工作方式与IPv4不同。它还涵盖了新的需求,例如移动设备在移动时保持相同的地址。IP块归属方案使构建这样的数据库变得更加困难(更不用说它会更大)。事实上,我刚刚检查了三个支持ipv6的地理定位服务,这三个服务都把我的国家搞错了。我的托管服务器也是如此。使用ipv4地址时,他们非常准确地确定了我的位置(正确的邻居)。我并没有说这很容易或现实…;-)
从长远来看,每个人都应该只使用IPv6,但这还有很长的路要走。
我安全地使用IPv6有多少年了?;)@Shubham如果可能的话,你应该在每一个新项目中开始支持IPv6,但在未来相当长的一段时间内,世界将是双栈的。只是没有获得IPv6数据库:(如果你知道我在哪里可以找到类似的数据库,你能帮我吗?
$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));