Общие > Базы данных
Использование масок
YA:
А RLIKE не подходит?
Если таблица большая, возможно, действительно надо разбивать на 4 поля (RLIKE, естественно, уже не понадобится) и индексировать их.
Xander:
Господа, не тупите, пожалуйста...
<?php
$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";
}
?>
То же самое можно сделать на любом языке, в котором есть бмнарные операторы. И заверяю вас, это будет ГОРАЗДО проще и быстрее, чем хранение IP в четырех полях, RLIKE, или встроенные регекспы языка. Всего-то VARCHAR(4) и пара строчек кода...
Maniac:
--- Цитировать ---Господа, не тупите, пожалуйста...
--- Конец цитаты ---
Гы, сдается мне, что человек хочет создавать бан-листы. Т.е. проверять, удовлетворяет ли айпишник хоть чему-нибудь из бд. Что ему, для этого просто жизненно необходимо всю базу к себе вытягивать?
ThE0ReTiC:
Ardzhan
REGEXP смотри в мане mysql
все через него можно сделать на два. :)
Xander:
Maniac,
ThE0ReTiC
есть же в MySql bitwise AND: http://www.mysql.com/doc/en/Bit_functions.html#IDX1315
Неужели нельзя без регекспов обойтись, одними битовыми операциями?
(это я просто спрашиваю)
Навигация
Перейти к полной версии