Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: poprawność ip
Forum PHP.pl > Forum > PHP
dopy
Witam,

Jakie są jeszcze sposoby na kontrole poprawności wprowadzonego w formularzu IP ? Chciałbym jak najdokładniej kontrolować czy aby napewno jest poprawne. Aktualne sprawdzam jego składnie, czy liczby nie przekraczają tam 255 i czy odpowiedni uklad... ale np. da sie to obejsc podajac "100.001.002.123" co jest jak najbardziej blednym numerem IP. Czy ma ktos jakies pomysly ?

Pozdrawiam i z gory dziekuje za pomoc.
Yacho
czyli 100.1.1.1 jest nieprawidłowym adresem ? skad ta nowina ? smile.gif
dopy
100.1.1.1 jest, ale 100.001.001.001 nie (to juz kwestia systemu php, bo moze i mniejsza jest roznica w innych miejscach, gdzie 001 automatycznie zamieni sie w 1 winksmiley.jpg )
mike
ip2long()
Cytat
The function ip2long() generates an IPv4 Internet network address from its Internet standard format (dotted string) representation. If ip_address is invalid then -1 is returned. Note that -1 does not evaluate as FALSE in php.


  1. <?php
  2.  
  3. $strIP = '256.100.100.100';
  4.  
  5. if( ip2long( $strIP ) == -)
  6. {
  7. echo 'Nie da się skonwertować, więc jest niepoprawny :)';
  8. }
  9. else
  10. {
  11. echo 'OK';
  12. }
  13.  
  14. ?>
dopy
Niestety, kod ten takze akceptuje ip typu "127.001.1.2" sad.gif
ave
  1. <?php
  2. $hosts = gethostbynamel('100.001.001.001');
  3. print_r($hosts);
  4. ?>


snitch.gif
dr_bonzo
dopy: stosujesz ip2long potem longtoip i jesli dostaniesz to samo co na samym poczatlu to jest ok.
dopy
  1. <?php
  2. function clr_ip($ip)
  3. {
  4. $ip=ip2long($ip);
  5. $ip=long2ip($ip);
  6. return $ip;
  7. }
  8. ?>


dr_bonzo: Faktycznie działa smile.gif Dziękuje smile.gif A i jeszcze ma swoją zalete - w przypadku podania zupełnie błędnego IP, nawet typu 1.2.3.4.5.6.7.8 to po przejsciu przez ta funkcje zwroci ip 255.255.255.255 smile.gif
dr_bonzo
dopy No i dziala to dobrze, ale zapomniales ze
Cytat
If ip_address is invalid then -1 is returned.

-1 odpowiada ok. 4 mld (1111....1111 binarnie) co odpowiada 255...255
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.