[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
imbalance_hero
Во, сложная задачка, сегодня столкнулся.
Есть диапазон IP: 48.05.01.01/20 , надо сравнить имеющийся ip: 48.05.100.152 с данным диапазоном, результат: true\false.
Если усложнить, то имеем сразу несколько диапазонов, которые вот в таком виде лежат в файле india.txt:
49.12.0.0/14
49.32.0.0/12
49.50.64.0/18
49.128.108.0/22
49.128.160.0/20
49.136.0.0/14

Вот надо проверить на вход. Решил я вопрос простым путём, сверился с whois, но это лишь на пару дней решение, сейчас пишу калькулятор для IP
imbalance_hero
Во, сложная задачка, сегодня столкнулся.
Есть диапазон IP: 49.05.0.0/20 , надо сравнить имеющийся ip: 49.05.100.152 с данным диапазоном, результат: true\false.
Если усложнить, то имеем сразу несколько диапазонов, которые вот в таком виде лежат в файле india.txt:
 49.12.0.0/14
49.32.0.0/12
49.50.64.0/18
49.128.108.0/22
49.128.160.0/20
49.136.0.0/14


Вот надо проверить на вход. Решил я вопрос простым путём, сверился с whois, но это лишь на пару дней решение, сейчас пишу калькулятор для IP

Основная цель: человек зашел, получили его IP: 49.05.100.152, проверили, есть ли его IP в том списке диапазонов, если есть, то доступ закрыт, если нет - проходи. Реализация должна быть на php.

Обозначение после слеша - маска подсети. Можно заглянуть в гугл по этому поводу: http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%...%B5%D1%82%D0%B8
Invis1ble
Свернутый текст
function inInterval($ip, $interval) {
list($start, $prefix) = explode('/', $interval);
$mask = str_pad(str_pad('', $prefix, '1'), 32, '0');
$intTriplets = explode('.', $start);
$ipTriplets = explode('.', $ip);
for ($i = 0, $s = 0; $i < 4; ++ $i, $s += 8)
if ($ipTriplets[$i] < $intTriplets[$i] || $ipTriplets[$i] > (255 - bindec(substr($mask, $s, 8)) ^ $intTriplets[$i]))
return false;

return true;
}


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.