|
Иногда полезная информация попадается на глаза тогда, когда необходимость в ней уже или еще отсутствует. Например, я только что нашел на сайте MyMans.org описание функций, с помощью которых в базе MySQL можно удобно хранить IP адреса, используя поле типа INT. Абсолютно правильная, кстати, идея — это гораздо эффективнее с точки зрения системных ресурсов, чем отводить текстовое поле (встречавшееся решение).
Пример кода:
SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
-- 2130706433, 2130706433
SELECT INET_NTOA(3520061480);
-- '209.207.224.40'
SELECT * FROM Sessions WHERE ip_address
BETWEEN INET_ATON('192.168.0.1') AND INET_ATON('192.168.0.255');
От себя могу добавить, что эти функции появились начиная с версии 3.23.15, поэтому их использование никак не ухудшит переносимость скриптов.
Кстати, очень рекомендую MyMans всем, кто его еще не видел. Весьма полезный коллективный блог по вебдеву.
Написать комментарий
|
# va1en0k: (18 марта, 2008 @ 06:28)
а новые ипы поддерживает?
# admin: (18 марта, 2008 @ 06:50)
va1en0k: В документации сказано «Addresses may be 4- or 8-byte addresses». Это значит, IP6 поддерживается. Сам пока не проверял.
# Юрий: (10 марта, 2011 @ 11:58)
Кстати для справки нужно использовать UNSIGNED INT, на некоторых IP в противном случае глючить будет. Сам попался на такое:)
# DLEVOODOO: (15 апреля, 2011 @ 01:37)
Спасибо за статью!