Я использую 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 .