Проверка ИП на вхождение в массив Cidr

Андрей16 років у сервісі
Дані замовника будуть вам доступні після подання заявки
27.09.2010

Требуется аналог ниже указанной функции с той лишь разницей что диапазон ип будет в 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

http://www.php.net/manual/en/function.ip2long.php#51660

Заявки фрілансерів