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
Форумы портала PHP.SU :: Версия для печати :: проблемы с long2ip и обратно
Форумы портала PHP.SU » PHP » Программирование на PHP » проблемы с long2ip и обратно

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

1. sabriel - 16 Января, 2009 - 07:14:44 - перейти к сообщению
Здравствуйте. столкнулся со следующей проблемой.
есть 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
2. Champion - 16 Января, 2009 - 08:38:40 - перейти к сообщению
http://forum.php.su/topic.php?fo...=33&topic=21
(Добавление)
Читайте, я там 2 способа решения привел, и вроде даже объяснил, почему так получается
(Добавление)
Плюс способ EuGenа
3. sabriel - 16 Января, 2009 - 09:33:16 - перейти к сообщению
Спасибо Champion. прочитал и изменил конструкцию, получилось
PHP:
скопировать код в буфер обмена
  1. if ($int_ip > 0) $int_ip -= 2*2147483648;

помогло. Улыбка
4. Champion - 16 Января, 2009 - 09:42:43 - перейти к сообщению
Думаете, лучше все ip приводить к отрицательным числам?
5. sabriel - 20 Января, 2009 - 07:52:54 - перейти к сообщению
Нет. но программа сервер, изменить которую не представляется возможным вбивает именно такие числа в базу. а мне необходимо делать выборку по IP клиента который открывает url Улыбка

 

Powered by ExBB FM 1.0 RC1