Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Диапазон IP адресов
 
 автор: Евгений Петров   (29.09.2005 в 00:04)   письмо автору
 
 

У меня есть база данных IP адресов (диапазон и страна). Есть ли в MySQL функции для работы с IP? Надо по заданному IP определить страну.

   
 
 автор: cheops   (29.09.2005 в 00:37)   письмо автору
 
   для: Евгений Петров   (29.09.2005 в 00:04)
 

Ну единственные функции - это INET_ATON() и INET_NTOA() для преобразования IP-адреса в число и обратно... Что-то не очень понятна задача - какая у вас структура базы данных?

   
 
 автор: Евгений Петров   (29.09.2005 в 14:33)   письмо автору
 
   для: cheops   (29.09.2005 в 00:37)
 

Да это то что нужно. А как эти функции работают точнее по какому алгоритму они преобразовывают адреса?

   
 
 автор: P@Sol   (29.09.2005 в 14:43)   письмо автору
 
   для: Евгений Петров   (29.09.2005 в 14:33)
 

что проще по названию функции найти ее описание?

http://dev.mysql.com/doc/mysql/ru/miscellaneous-functions.html


INET_NTOA(expr) 

По заданному числовому адресу сети (4 или 8 байтов) возвращает представление указанного адреса в виде разделенных точками четырех октетов в виде строки: 


mysql> SELECT INET_NTOA(3520061480);
        -> "209.207.224.40"



INET_ATON(expr) 

По заданному представлению сетевого адреса в виде строки, содержащей разделенные точками четыре октета, функция возвращает целое число, представляющее собой числовое значение данного адреса. Адреса могут быть длиной 4 или 8 байтов: 


mysql> SELECT INET_ATON("209.207.224.40");
        -> 3520061480


Результирующее число всегда генерируется в соответствии с порядком расположения октетов в сетевом адресе, например вышеприведенное число вычисляется как 209*256^3 + 207*256^2 + 224*256 +40. 

   
 
 автор: cheops   (29.09.2005 в 18:43)   письмо автору
 
   для: P@Sol   (29.09.2005 в 14:43)
 

Да, только следует помнить, что под хранения IP-адреса в виде целого числа требуется поля типа BIGINT - а то можно отсечь половину диапазона, если использовать INT.

   
 
 автор: Евгений Петров   (30.09.2005 в 00:09)   письмо автору
 
   для: cheops   (29.09.2005 в 18:43)
 

Всем спасибо! Вообще мог сам догадаться как он вычмсляется, т.к. данный алгоритм довольно распространен. Но почему то не додумался. :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования