Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2015, 21:55   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Диапазон IP-адресов вставить в массив

Добрый день.
Есть следующая ситуация :

PHP код:
<?php
$cur_ip_adrr 
$_SERVER['REMOTE_ADDR'];  //получили текущий адресс
$ip_array = array('192.168.0.1','192.168.0.2','192.168.0.3','127.0.0.1');  //массив по простому
if (in_array($cur_ip_adrr$ip_array))  echo 'YES';  //проверили вхождение элемента в массив
?>
Но на самом деле массив ИП-адресов выглядит так 66.231.188.0/24 (для примера), точнее таких массивом много (допустим 10)

Вопрос : как средствами РНР из 66.231.188.0/24 сделать последовательность элементов?
Pcrepair вне форума Ответить с цитированием
Старый 21.04.2015, 21:31   #3
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

И вот что получилось :

PHP код:
<?php
//массив СИДР чиста для проверки работоспособности
$ip_array = array(
'192.168.0.0/24',    //доступ к серверу из ЛВС
'127.0.0.0/8'        //локальный хост
);

//текущий ИП-адрес посетителя
$cur_ip_adrr $_SERVER['REMOTE_ADDR'];

//функция определения вхождения ИП в СИДР, спасибо что подсказали
function ipCIDRcheck($ip$cidr) {
  list(
$net$mask) = explode('/'$cidr);
  return ( 
ip2long($ip) & (-1<<(32-$mask)) ) == ip2long($net);
}

//ЦИКЛ проверки вхождения текущего ИП в СИДРы
$flag false;
foreach(
$ip_array as $cur_cidr)
{
  if ((
ipCIDRcheck($cur_ip_adrr$cur_cidr)) == true
    {
$flag true; break;}  //при первом вхождении установить флаг и выйти из цикла
    
else
    {
/*может потом что то допишу*/}
}

if (
$flag == true)
  {echo 
'YES';}    //все отлично
  
else
  {echo 
'NO';}     //принмаем меры к нарушителю
?>
Теперь можно критиковать
Pcrepair вне форума Ответить с цитированием
Старый 21.04.2015, 21:41   #4
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

код работает? если да то какая критика, всем плевать как написан код главное чтобы работало
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
...вставить диапазон из другого листа... maxvip Microsoft Office Excel 8 22.08.2017 16:56
Правильно ли сделал массив не повторяющихся случайных ip адресов Illusiony PHP 12 22.01.2015 21:30
Диапазон адресов xRamzeSx Общие вопросы Delphi 2 13.04.2013 08:20
Организовать двумерный массив адресов (3х3) olga) Помощь студентам 0 21.11.2011 15:59
Как вставить диапазон в конкретную строку листа Excel со сдвигом вниз имеющихся? malor Microsoft Office Excel 3 17.01.2010 17:48