![]() |
![]() |
![]()
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:
(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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 02:35 |