Нужен SQL запрос
Нужен SQL запрос
Подскажите пожалуйста SQL запрос выдергивания логина и пароля по IP
1. Что-то IP адреса видимо не в таком виде хранятся. В базе они вида "-1022335097" (еще смущает знак минуса), что после конвертации дает 60.239.152.121. Хотя должна быть другая сеть, 172.х.х.х
2. Да и в таблице ip_groups очень мало заполненных полей uname и upass
3. Некоторые IP адреса отображаются все-таки правильно, в смысле из нашей сети
Может у кого есть мысли?
2. Да и в таблице ip_groups очень мало заполненных полей uname и upass
3. Некоторые IP адреса отображаются все-таки правильно, в смысле из нашей сети
Может у кого есть мысли?
Код: Выделить всё
select inet_ntoa(4294967295 & ip_groups.ip ) , inet_ntoa(4294967295 & ip_groups.mask ) uname, upass from ip_groups where is_deleted = 0 and inet_ntoa(ip_groups.ip & 0xFFFFFFFF) = '1.2.3.4'
Вот за это тебе огромнейший респект и спасибо! Все работает на УРА!duzer писал(а):В php функция перевода long2ip() ip2long()Код: Выделить всё
select inet_ntoa(4294967295 & ip_groups.ip ) , inet_ntoa(4294967295 & ip_groups.mask ) uname, upass from ip_groups where is_deleted = 0 and inet_ntoa(ip_groups.ip & 0xFFFFFFFF) = '1.2.3.4'

Только что это за цифра такая 4294967295?
И как средствами PHP можно перевести обычный IP в такой, который в UTM? ip2long() дает не то число?
Рано обрадовался... не все гладко пошло!
Подскажите, вот как получить из IP(база) = "-1022335083" реальный IP абонента = "172.20.0.217" и наоборот?
В большей степени интересует конвертация из обчного в строковый для сравнения с базой. inet_ntoa не дает отрицательных значений, какие хранятся в базе. А если и проигнорировать минус, то все равно значение "левое".
Подскажите, вот как получить из IP(база) = "-1022335083" реальный IP абонента = "172.20.0.217" и наоборот?
В большей степени интересует конвертация из обчного в строковый для сравнения с базой. inet_ntoa не дает отрицательных значений, какие хранятся в базе. А если и проигнорировать минус, то все равно значение "левое".
учись гуглить http://www.google.ru/search?hl=ru&newwi ... +&gs_rfai=
Ответ - просто супер!!!starchik писал(а):учись гуглить http://www.google.ru/search?hl=ru&newwi ... +&gs_rfai=
А для чего нужен тогда этот форум, если все в гугл будут слать?!
Я задал конкретный вопрос и косвенно, и прямо относящийся к UTM, а точнее к её базе!
Читать из бызы напрямую можно, а вот писать не надо, ибо смысла нет.Hron писал(а):Ответ - просто супер!!!starchik писал(а):учись гуглить http://www.google.ru/search?hl=ru&newwi ... +&gs_rfai=
А для чего нужен тогда этот форум, если все в гугл будут слать?!
Я задал конкретный вопрос и косвенно, и прямо относящийся к UTM, а точнее к её базе!
Но раз очень надо,тогда берешь inet_aton. Если результат больше 2147483647 (0x7FFFFFFF), то вычитаешь его из 4294967295(0xFFFFFFFF). Если меньше, то inet_аton() и есть результат.
Для поиска есть такое понятие как signed и unsigned int. Код писать не буду.
ЗЫ Не нравится гугл, есть яндекс, например. Сам вот тоже не брезгую если что

Спасибо. Я тоже не брезгую поиском, но когда он результатов не дает, т.е. непонятно - приходится обращаться на спец форум, т.е. я сюда и обратился, а отсюда меня отправляют обратно на поиск. Нехорошо получается! Ну да ладно, суть не в этом!ds писал(а): Читать из бызы напрямую можно, а вот писать не надо, ибо смысла нет.
Но раз очень надо,тогда берешь inet_aton. Если результат больше 2147483647 (0x7FFFFFFF), то вычитаешь его из 4294967295(0xFFFFFFFF). Если меньше, то inet_аton() и есть результат.
Для поиска есть такое понятие как signed и unsigned int. Код писать не буду.
ЗЫ Не нравится гугл, есть яндекс, например. Сам вот тоже не брезгую если что
Но с запросом что-то никак не получается. Не могу найти связь между таблицами. Может кто наваяет?! В общем суть такая:
1. Преобразовать нормальный IP в строковый (с этим разберусь)
2. Имея строковый ip, который находится в таблице ip_groups нужно вытащить логин и пароль, находящиеся в таблице users.
P.S. Запрос бы сам и наваял, если бы нашел связь между этими таблицами. Если смотреть с начала таблицы, то работает запрос
Код: Выделить всё
SELECT login,password FROM users WHERE id=(SELECT ip_group_id FROM ip_groups WHERE INET_NTOA(ip_groups.ip & 0xFFFFFFFF) = 'тут нормальный IP');
P.S.S.
В таблице ip_groups поля uname и upass пустые. Логин и пароль находятся только в таблице users