Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите прочесть regexp, определяющий ip адрес 
V
    Опции темы
Royan
  Дата 15.12.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Нашел регулярное выражение, проверяющее на валидность ip адрес

пример работы:
Код

preg_match("/\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b/", "127.0.0.10", $ip);
print_r($ip);


Вопрос, конечно, не совсем тактичный, ибо я по долгу профессии обязан был бы разобраться сам, но для меня выражение выглядит, как на французском (которого я не знаю), а именно, могу найти слово в словаре (я понимаю что такое \b или \d), но вся фраза, ни пса, яснее не становится.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
SelenIT
Дата 16.12.2007, 00:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



(
( - одно из нижеследующего:
[01]?\d?\d - однозначное или двузначное число, или трехзначное, начинающееся на 0 или 1 (обязательна только последняя цифра), т.е. числа 0-199 
| - или
2[0-4]\d - числа 200 - 249
| - или
25[0-5] - числа 250 - 255
)
\. - с точкой после всего этого
)
{3} - таких комбинаций 3 штуки
а после этого опять число из 3-х диапазонов (как выше), но без точки в конце.

P.S. Не лучше ли для проверки айпишника на допустимость использовать ip2long?  smile 


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Royan
Дата 16.12.2007, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Спасибо SelenIT!

Цитата(SelenIT @  15.12.2007,  21:40 Найти цитируемый пост)
Не лучше ли для проверки айпишника на допустимость использовать ip2long

Разумеется, можно, но этот пример все таки изящней, а после твоих разъяснение еще и полностью понятен, а когда ip превратить в long то там вообще ничего непонятно, хотя и это исправляется с помощью комментариев.




--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
SelenIT
Дата 16.12.2007, 02:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



Цитата(Royan @  16.12.2007,  01:33 Найти цитируемый пост)
когда ip превратить в long то там вообще ничего непонятно

Я полагал, что задача - проверить ip на валидность. А для этого достаточно убедиться, что ip2long не вернула -1 или false...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Royan
Дата 16.12.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Цитата(SelenIT @  15.12.2007,  23:11 Найти цитируемый пост)
 А для этого достаточно убедиться, что ip2long не вернула -1 или false...

Дельное замечание, я как то даже не посмотрел что возвращает эта функция в случае ошибки.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Royan
Дата 16.12.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: нет
Всего: 15



Вообще я тут посмотрел внимательней ip2long не так "чиста" как кажется, например, следующий код она считает вполне валидным:

Код

var_dump(ip2long("10.0.256"));


кроме того функция возвращает -1 вот в таком случае:

Код

var_dump(ip2long("255.255.255.255"));



--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
gemaglabin
Дата 10.2.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 10.2.2008

Репутация: нет
Всего: нет



О безопасности использования ip2long

Код


var_dump( ip2long( '127.0.0.1') ); 
php -> int(2130706433)

var_dump( ip2long( '127.0.0.1A' ) ); 
php-> bool(false)

var_dump( ip2long( '127.0.0.1' . chr(9) .'union select \'underWHAT?!\'' ) ); 
php -> int(2130706433)

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.