Автор Тема: Использование масок  (Прочитано 6928 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Использование масок
« Ответ #15 : 10 Декабря 2002, 13:36:34 »
Xander
Цитировать
А битовые операции MySQL действительно с символами не работают

У меня почему то не сработало и это:
Цитировать
$ip="127.0.0.1";
$mask="127.*.0.1";
$ip="\\xC0\\xA8\\x00\\x05";
$mask="\\xC0\\xA8\\x00\\xFF";
if (($ip & ~$mask)=="\\x00\\x00\\x00\\x00") {
    echo "IP matches mask";
} else {
    echo "IP doesnt matches mask";
}
?>

Цитировать
У меня есть ощущение, что пробежаться с битовыми операциями в PHP-массиве может быть быстрее, чем с регекспами в базе, но я в этом не уверен.

Пробежаться может-то и быстрее, но представь, что прийдется загрузить сначала в ПХП весь результат запроса. По-моему будет быстрее внутри сервера MySQL все это выполнить...
2 MAKC
Цитировать
как тебе уже тут писали - через REGEXP

:D Что через регулярку, я и сам знаю... А как, если не секрет...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Использование масок
« Ответ #16 : 10 Декабря 2002, 13:45:34 »
например так (у меня так работает):

Select SUM(bytes) FROM traf_ext WHERE (to_port=\'80\' or to_port=\'443\' or to_port=\'8080\') and from_ip REGEXP "^10\\.0\\.0" and (TO_DAYS(now())-TO_DAYS(dat)) <= \'0\'
AS IS...

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Использование масок
« Ответ #17 : 10 Декабря 2002, 15:00:14 »
Я понимаю, что это работает... И знаю как MySQL использовать регулярки я тоже знаю. Но задача-то не выбрать по маске, а...
В базе есть строчки, которые содержат маски.
Надо подсчитать кол-во масок, которым соответствует IP

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Использование масок
« Ответ #18 : 10 Декабря 2002, 15:17:54 »
Тогда их надо выбирать из базы и строить  regexp\'ы уже из них. Это если ты не хочешь разбивать адрес на 4 поля по байту (хотя я не понимаю, почему).
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Использование масок
« Ответ #19 : 10 Декабря 2002, 15:18:31 »
select count(*)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Использование масок
« Ответ #20 : 10 Декабря 2002, 15:27:30 »
AlieN
Цитировать
select count(*)
- так ты посчитаешь все строчки.
А надо...
Цитировать
Надо подсчитать кол-во масок, которым соответствует IP

MY
Цитировать
Тогда их надо выбирать из базы и строить regexp\'ы уже из них. Это если ты не хочешь разбивать адрес на 4 поля по байту (хотя я не понимаю, почему).

Понятно... Значит не тянуть базу не получится :-(
Ну  с IP разбить-то можно. Но есть еще одна таблица со списком забаненных URL... типа some*site*.asd*.ru - тут-то не разобьешь!
Спасибо за ответы.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28