Соответствие сети к IP адресу

Kitrover

Guest
Соответствие сети к IP адресу

Как правильно написать запрос выбора сети по IP адресу из базы мускла?
Что то типа :
если ип начинается на 10.1 то сеть - номер 1
если ип начинается на 10.2 то сеть - учреждение
т т.д
если ип начинается на 212.1 то инет

у меня есть кусочек проверки ипов
if (substr ($real_ip, 0, 3) !== "10.")
но как его переделать под то что нужно непойму....может есть что-то готовое?
Народ помогите плиззз
 

jdoe

Новичок
правильно хранить ip в виде 32-битного числа (чем, собственно, ip-адрес и является). сравнение в этом случае тривиальное.

если переделывать ну-ваще-никак - читай мануал по строковым функциям MySQL. там, можно сказать, и есть готовое.
 

Guest111

Guest
Kitrover
используй в запросе LIKE:
SELECT * FROM `table` WHERE `p_id` LIKE '10.1%'

-~{}~ 27.08.05 08:57:

jdoe

а вот кстати, такой пример вычитал в мане:
Код:
<?php
$ip   = gethostbyname("www.example.com");
$long = ip2long($ip);

if ($long === -1) {
    echo "Invalid IP, please try again";
} else {
    echo $ip   . "\n";           // 192.0.34.166
    echo $long . "\n";           // -1073732954
    printf("%u\n", ip2long($ip)); // 3221234342
}
?>
насколько я понял реальный адрес здесь 3221234342.
Точнее не реальный, а изначальное представление IP адреса... а что за число -1073732954? Почему оно отрицательно?
 

jdoe

Новичок
это одно и то же число в знаковом и беззнаковом представлении.
 

Kitrover

Guest
саньки....
сделал, но немного по другому
но все же рашет :))))
 
Сверху