【发布时间】:2012-02-08 19:13:51
【问题描述】:
我正在使用 PHP 将用户 IP 地址与 IP 块列表进行比较,其中大部分是 IPv4,但其中一些是 IPv6。我从用户那里获得的 IP 地址始终与 IPv4 兼容,或者我假设是这样。我将如何比较这个?
这是我现在使用的:
function ip_check($ip, $cidr) {
list($net, $mask) = split("/", $cidr);
$ip_address = decbin(ip2long($ip));
$ip_net = decbin(ip2long($net));
if (substr($ip_net, 0, $mask) == substr($ip_address, 0, $mask)) {
return TRUE;
}
return FALSE;
}
编辑:例如,我需要查看 194.144.247.254 是否属于 2001:067c:006c::/48 或 2001:1a98:: /32 或 217.151.176.18/32 或 217.171.208.0/20。
【问题讨论】: