Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z funkcja ip2long
MySQL
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 3.06.2008

Ostrzeżenie: (0%)
-----


Na stronie dokumentacji PHP mozna przeczytac, ze funkcja ip2long konwertuje lancuch znakow IP na liczbe typu int.

Polowa adresow bedzie przekonwertowana na liczbe dodatnia a polowa na liczbe ujemna. W PHP typ int przyjmuje wartosci: –2147483648 do 2147483647.

Powiedzcie mi w takim razie dlaczego jak wywoluje funkcje w nastepujacy sposob:
  1. <?php
  2. $w = ip2long($_SERVER['REMOTE_ADDR']);
  3. ?>

(a w moim przypadku jest to ip2long('158.75.12.141')) to w wyniku otrzymuje, ze $w = 2655718541.

Liczba 2655718541 przekracza typ int. Powinienem dostac jakas liczbe ujemna tym bardziej ze w bazie MySQL przeznaczone jest na IP wlasnie pole typu SIGNED INT. Nie wiem czy to ma jakis zwiazek ale zarowno host jak i serwer Apache pracuja na komputerze z 64 bitowym procesorem. Nawet jezeli dokonuje rzutowania $w = (int)ip2long(...); to i tak to nic nie zmienia.

Wiem ze moglbym poradzic sobie z tym w ten sposob, ze zamiana: liczba -> (String)IP oraz (String)IP -> liczba mogly by sie zajac funkcje MySQL'a: INET_ATON oraz INET_NTOA. Ale wlasnie zastanawiam sie dlaczego mi to w PHP nie dziala :-/

Ten post edytował achaja 21.04.2009, 17:27:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Apocalyptiq
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

Ostrzeżenie: (10%)
X----


Hm, mi się zdaję że to zwraca "long int", czyli int'a o większym zakresie (sama nazwa funkcji na to wskazuje).
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Jw. w php wielkosc inta jest zalezna od bitowosci procesora - czyli masz inta 64 bitowego

Cytat
The size of an integer is platform-dependent, although a maximum value of about two billion is the usual value (that's 32 bits signed).

http://us3.php.net/int
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 18:51