КАРТА САЙТА
Sibnet.ru
Sibnet.ru

Sibnet.ru — это информационно-развлекательный интернет-проект, ориентированный на широкий круг Сибирского региона.
По данным Rambler Top100, Sibnet.ru является самым популярным порталом в Сибири.

Контакты:
АО "Ринет"
ОГРН 1025402475856
г. Новосибирск, ул. Якушева, д. 37, 3 этаж
отдел рекламы:
(383) 347-10-50, 347-06-78, 347-22-11, 347-03-97

Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль

Внимание! Теперь для входа на форум необходимо вводить единый пароль регистрации сервисов sibnet.ru!

Здравствуйте, гость ( Вход | Регистрация )



 
Ответить в эту темуОткрыть новую тему
> Вхождения Ip адреса в сеть, решения на php
Pilots
сообщение 9.11.2007, 18:06
Сообщение #1


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 372
Регистрация: 5.7.2007
Из: Барнаул
Пользователь №: 1 615



Репутация:   6  


Люди подскажите срочно нужно

как можно проверить вхождения ip адреса в сеть

Допустим есть таблица в mysql в которой все сети перечислены в виде

90.188.0.128/255.255.255.192
или
90.188.0.128/26

сети будут перечислены в каком то одном виде в том в котором проще искать вхождения

как мне понять принадлежит ли адрес 212.94.118.25 к этой подсети.
Просто визуально я вижу что нет, а как программу научить понимать что входит в эту подсеть, а что нет.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Pilots
сообщение 10.11.2007, 15:41
Сообщение #2


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 372
Регистрация: 5.7.2007
Из: Барнаул
Пользователь №: 1 615



Репутация:   6  


Цитата(LstR.Vasabi @ 9.11.2007, 19:38) *

Не совсем понял, но дели explode() и сравнивай.
Функция делит строку по определенному знаку на части.

объявляешь допустим $ip и делишь -

$ip = explode('.', $ip);

На выходе получится массив - $ip['0'] и т.д
Ну и допустим делаешь проверку.

Извени если не так, сам недавно книжку сел читать )

Спасибо за помощь, но это мне не чего не даст, ну разделил я адрес на части, а что я с это имею, что с чем должен сравнивать то?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Pilots
сообщение 12.11.2007, 11:25
Сообщение #3


Любит поговорить
Group Icon


Группа: Sibnet-club
Сообщений: 372
Регистрация: 5.7.2007
Из: Барнаул
Пользователь №: 1 615



Репутация:   6  


Цитата(LstR.Vasabi @ 10.11.2007, 15:20) *

Давай так...
вот есть такая строка: 90.188.0.128/255.255.255.192
Надо определить входит ли ip в этот диапазон?
Т.е он должен быть больше чем 90.188.0.128, но меньше чем 255.255.255.192 ?

Нет.

90.188.0.128 это начало сети и первый адрес в ней это 90.188.0.129
255.255.255.192 это маска сети а не конечное значение
т.е. сеть 90.188.0.128 с маской 255.255.255.192 соедержит адреса
с 90.188.0.129
по 90.188.0.190

Так понятнее объяснил, т.е. мне нужно проверить вхождения ip в эту подсеть.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DoS
сообщение 12.11.2007, 12:25
Сообщение #4


Поддерживает разговор
Group Icon


Группа: Пользователи
Сообщений: 108
Регистрация: 9.7.2007
Из: тех, кто пишет PHP и SQL за еду
Пользователь №: 1 788



Репутация:   5  


тебе нужно определить начальный и конечный диапазон и записать их в массивы, потом по ифу сравнивать вхождение в данный диапазон

после /24 сравнение идёт по одному значению $ip[3]; от ?? до /24 сравнение по двум значениям $ip[2] и $ip[3]

всё банально просто

тобишь пример:

имеем: начало 192.168.0.0 и маска /24 онаже 255.255.255.0 проверить вхождение 192.168.0.120

по explode делим начало на 4 значения в массиве $ip1

т.к. маска /24 до конечный 192.168.0.255 делим это тоже эксплодом в $ip2

потом делим 192.168.0.120 в $ip3

и т.к. у нас /24, то if ($ip1[3] > $ip3[3] && $ip2[3] < $ip3[3] ) echo 'true'; else echo 'false';
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. просматривают этот форум (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 9.7.2025, 5:44
Редакция: (383) 347-86-84

Техподдержка:
help.sibnet.ru
Размещение рекламы:
тел: (383) 347-06-78, 347-10-50

Правила использования материалов