[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Winston
Вот мое решение
Свернутый текст
function checkIP($ip, $addr)
{
list($ipNet, $mask) = explode('/', $addr);
$ip = sprintf('%u', ip2long($ip));
$ipNet = str_pad(decbin(ip2long($ipNet)), 32, 0, STR_PAD_LEFT);
$fullNet = decbin(ip2long('255.255.255.255'));
$net = str_pad(str_pad('', $mask, 1), 32, 0);
$maxIp = str_replace('-', 1, str_replace(1, 0, str_replace(0, '-', ($fullNet & $net))));
$maxIp = bindec($ipNet | $maxIp) - 1;
$minIp = bindec($ipNet & $net) + 1;

return ($ip >= $minIp && $ip <= $maxIp) ? true : false;
}

$ip = '127.0.0.1';
$netAddr = '127.0.0.5/12';

var_dump(checkIP($ip, $netAddr));

На выходе выдает bool(true)
Кстати, Invis1ble, твое решение выдает false. И также false выдает при разных значениях маски (/20 или /11), хотя должно быть true.
PS: калькулятор в помощь :)


Не пойму почему после применения инверсии выдает знаки вопроса? :huh:
Если написать ~($fullNet & $net) выдаст вопросы... Может это из-за юникода ?
Чтобы обойти это, пришлось быдлокодить написать такой костыль
Свернутый текст
str_replace('-', 1, str_replace(1, 0, str_replace(0, '-', ($fullNet & $net))));




Спустя 8 часов, 43 минуты, 24 секунды Winston написал(а):
imbalance_hero
Цитата (imbalance_hero @ 16.10.2011 - 22:28)
Я же там написал, парсил whois

Так и продолжаешь парсить? Или нашел лучшее решение ?
Быстрый ответ:

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