Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблемы с long2ip и обратно

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
sabriel
Отправлено: 16 Января, 2009 - 07:14:44
Post Id


Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Июнь 2008  
Откуда: Салават, Башкортостан


Помог: 0 раз(а)




Здравствуйте. столкнулся со следующей проблемой.
есть 4х битное представление адреса
-1408237555
при приминении функции long2ip адрес конвертится в ipv4
172.16.0.13
Обратно конвертится тоже нормально.
Но если я захожу на сервер имея этот адрес 172.16.0.13 и получаю его в
CODE (text):
скопировать код в буфер обмена
  1. $userip=getenv("REMOTE_ADDR");

при применении функции ip2long получается
2886729741
Что кстати тоже является адресом 172.16.0.13
помогите пожалуйста решить данную проблему что бы выдавал именно -1408237555
P.S.
если сделать так
CODE (text):
скопировать код в буфер обмена
  1. $userip="172.16.0.13";
  2. echo ip2long($userip);

то получится
-1408237555

(Отредактировано автором: 16 Января, 2009 - 07:18:02)

 
 Top
Champion Супермодератор
Отправлено: 16 Января, 2009 - 08:38:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




http://forum.php.su/topic.php?fo...=33&topic=21
(Добавление)
Читайте, я там 2 способа решения привел, и вроде даже объяснил, почему так получается
(Добавление)
Плюс способ EuGenа
 
 Top
sabriel
Отправлено: 16 Января, 2009 - 09:33:16
Post Id


Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Июнь 2008  
Откуда: Салават, Башкортостан


Помог: 0 раз(а)




Спасибо Champion. прочитал и изменил конструкцию, получилось
PHP:
скопировать код в буфер обмена
  1. if ($int_ip > 0) $int_ip -= 2*2147483648;

помогло. Улыбка
 
 Top
Champion Супермодератор
Отправлено: 16 Января, 2009 - 09:42:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Думаете, лучше все ip приводить к отрицательным числам?
 
 Top
sabriel
Отправлено: 20 Января, 2009 - 07:52:54
Post Id


Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Июнь 2008  
Откуда: Салават, Башкортостан


Помог: 0 раз(а)




Нет. но программа сервер, изменить которую не представляется возможным вбивает именно такие числа в базу. а мне необходимо делать выборку по IP клиента который открывает url Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB