0 Пользователей и 1 Гость просматривают эту тему.
А битовые операции 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-массиве может быть быстрее, чем с регекспами в базе, но я в этом не уверен.
как тебе уже тут писали - через REGEXP
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\'
select count(*)
Надо подсчитать кол-во масок, которым соответствует IP
Тогда их надо выбирать из базы и строить regexp\'ы уже из них. Это если ты не хочешь разбивать адрес на 4 поля по байту (хотя я не понимаю, почему).