Как задать диапазон допустим интернет провайдера Beeline и при проверке IP писать что это Beeline ? или не Beeline?
Допустим диапазон домолинка 77.45.128.0/77.45.255.255
[PHP] Проверка вхождения IP-адреса в диапазон
-
- Сообщения: 203
- Зарегистрирован: 31.12.2009
Последний раз редактировалось Distructor 11 ноя 2010, 10:05, всего редактировалось 3 раза.
🇷🇺🇷🇺🇷🇺
Тогда так77.45.0.0/77.45.255.255
Код: Выделить всё
if(preg_match('/^77\.45\.[0-9]{1,3}\.[0-9]{1,3}$/',$IP))
echo 'Внутри сети!';
else
echo 'Внешка';
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"
- Distructor
- Администратор
- Сообщения: 1607
- Зарегистрирован: 28.12.2009
и идеале надо перевести ип и диапазон в число и потом их уже сравнивать как простые числа
-
- Сообщения: 203
- Зарегистрирован: 31.12.2009
AgentSIB можно более подробно про '/^77\.45\.[0-9]{1,3}\.[0-9]{1,3}$/' что-то не особо понял что значит [ ] скобки так-же {} , что обозначает переменая IP это понятно в переменную проверку ипа ставить.
🇷🇺🇷🇺🇷🇺
Кури мануалы по регулярным выражениям, если особо сложно, вот тебе вариант, предложенный Диструктором:
Подходит это только для того варианта, что ты предложил.
-- добавлено 11 ноя 2010, 10:26 --
Тогда так
Определение IP я намеренно не пишу, у каждого свои вкусы
Код: Выделить всё
if ( strpos( '77.45.', $IP )===0 )
echo 'Внутри сети';
else
echo 'Внешка';
-- добавлено 11 ноя 2010, 10:26 --
Вижу диапазон изменился)77.45.128.0/77.45.255.255
Тогда так
Код: Выделить всё
$ip_begin=ip2long('77.45.128.0');
$ip_end=ip2long('77.45.255.255');
$ip_real=ip2long($user_ip);
if($ip_real>=$ip_begin&&$ip_real<=$ip_end) echo 'Внутри сети';
else echo 'Неа)';
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"
- Distructor
- Администратор
- Сообщения: 1607
- Зарегистрирован: 28.12.2009
про это я и говорил в самом начале))AgentSIB писал(а):Тогда так
его уже обсуждали в viewtopic.php?p=3642#p3642AgentSIB писал(а):Определение IP я намеренно не пишу, у каждого свои вкусы
- Distructor
- Администратор
- Сообщения: 1607
- Зарегистрирован: 28.12.2009
достаточно кратко)
Код: Выделить всё
function checkEntranceIP ($user_ip, $ip_from, $ip_to)
{
return ( ip2long($user_ip)>=ip2long($ip_from) && ip2long($user_ip)<=ip2long($ip_to) );
}
echo checkEntranceIP ( $user_ip, '77.45.128.0', '77.45.255.255') ? 'Внутри сети' : 'Неа';
Меримся?)))
Код: Выделить всё
function isLocal ($user_ip)
{
return ( ip2long($user_ip)>=ip2long('77.45.128.0') && ip2long($user_ip)<=ip2long('77.45.255.255') );
}
echo isLocal ( $user_ip) ? 'Внутри сети' : 'Неа';
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"
-
- Сообщения: 203
- Зарегистрирован: 31.12.2009
Спасибо , идеальная работа!AgentSIB писал(а):Меримся?)))Код: Выделить всё
function isLocal ($user_ip) { return ( ip2long($user_ip)>=ip2long('77.45.128.0') && ip2long($user_ip)<=ip2long('77.45.255.255') ); } echo isLocal ( $user_ip) ? 'Внутри сети' : 'Неа';
-- добавлено 13 ноя 2010, 09:15 --
А как задать несколько диапазонов , но с учётом если домолинк то пишит домолинк , если билайн пишит билайн , если не известно пишит неизвестно ...
🇷🇺🇷🇺🇷🇺