Проверка ИП на вхождение в массив Cidr
Требуется аналог ниже указанной функции с той лишь разницей что диапазон ип будет в CIDR формате.
////////////////////////////////////////////////////////////////////////////////////
function IpDetect($REMOTE_ADDR)
{
$stop_ips_masks = array(
//Пример массива
"127\.0\.0\.[0-9]+", //127.0.0.1 - 127.0.0.255
"192\.[0-9]+\.[0-9]+\.[0-9]+", //192.0.0.1- 192.255.255.255
"65\.52\.[0-4]\.[0-9]+" // 65.52.0.1 - 65.52.4.255
);
foreach ($stop_ips_masks as $ip)
{
if(preg_match( '#^'.$ip.'$#', $REMOTE_ADDR)){
return($ip);
}
}
return (false);
}
$ipdetect = IpDetect($_SERVER['REMOTE_ADDR']);
if (!$ipdetect) { echo "CLEAR!"; } else {echo "FIND!";}
?>
/////////////////////////////////////////////////////////////////////////////////
Cidr массив
127.0.0.1/20
192.0.0.1/8
65.52.0.1/21 // 65.52.0.1 - 65.52.7.255
Пример Скрипта на вхождение ИП в CIDR с php.net