Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_match/eregi sprawdzanie ipka
Forum PHP.pl > Forum > Przedszkole
peter13135
czy mógłby mi ktoś napisać linijkę kodu PHP która bedzie sprawdzała czy IP jest prawidłowy??

chodzi mi o takie coś co będzie oddawało true jeśli ciąg znaków bedzie tego typu
[0-255]:[0-255]:[0-255]:[0-255] (mam nadzieje że wiecie oco chodzi) i mi pomożecie, bo mi coś nie wychodzi :/
kefirek
  1. <?php
  2. $test = "255.255.255.0";
  3. if (preg_match('/^(?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)(?:[.](?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)){3}$/', $test))
  4. {
  5. echo 'OK';
  6. }
  7. else
  8. {
  9. echo 'błąd';
  10. }
  11. ?>
peter13135
  1. <?php
  2. $ip='255.100.100.999';
  3. if(preg_match("/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/i", $ip))
  4. echo 'a';
  5. else echo 'b';
  6. ?>




to zwraca true (wyświetla a) a nie powinno bo w adresie ip jest max do 255, czy da sie to jakiś zmienić??
Lion_87
a tak:
  1. <?php
  2. $ip='255.100.100.255';
  3. if(preg_match("/^[0-255]{1,3}.[0-255]{1,3}.[0-255]{1,3}.[0-255]{1,3}$/i", $ip))
  4. echo 'a';
  5. else echo 'b';
  6. ?>


to tylko przykład tongue.gif
kefirek
Sprawdzałem i działa jak trzeba
  1. <?php
  2. $test = "255.100.100.999";
  3. if (preg_match('/^(?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)(?:[.](?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)){3}$/', $test))
  4. {
  5. echo 'OK';
  6. }
  7. else
  8. {
  9. echo 'blad';
  10. }
  11. ?>
peter13135
ten nowy przykład kefirka wyświetla błąd,
a przykład Lion_87 wydaje się pracować bez zarzutu

dałem wam po plusiku, mimo że przykład kefirka niedziała lub go ja nieumiem wykorzystać smile.gif
kefirek
No dziwne ze błąd skoro adres morze być max 255 a jak wpiszesz 255.100.100.999 to oczywiste ze błąd wyświetli a jak wpisze 255.100.100.255 to wyświetli ok i sprawdzałem przed chwilą i działa jak trzeba
peter13135
no a mi taki kod

  1. <?php
  2. $test = "255.100.100.255";
  3. if (preg_match('/^(?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)(?:[.](?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)){3}$/', $test))
  4. {
  5. echo 'OK';
  6. }
  7. else
  8. {
  9. echo 'blad';
  10. }
  11. ?>


wyswietla blad (mam krasnala, php 4.3)
peter13135
hmmm, no działa, jednak mi coś niechce :/

edit://


  1. <?php
  2. $ip='123.100.100.255';
  3. if(preg_match("/^[0-255]{1,3}.[0-255]{1,3}.[0-255]{1,3}.[0-255]{1,3}$/i", $ip))
  4. echo 'a';
  5. else echo 'b';
  6. ?>


taki kod wyświetla b
dziwne :/



jesteś pewny że ten kod na stronie jest taki sam jaki dałeś tutaj na forum??
kefirek
Cytat(peter13135 @ 29.12.2008, 20:15:29 ) *
hmmm, no działa, jednak mi coś niechce :/

jesteś pewny że ten kod na stronie jest taki sam jaki dałeś tutaj na forum??



Tak taki sam na 100% co podałem tutaj
qba10
jest taka fajna funkcja sprawdzajaca ip typ IPV4 i IPV6

  1. <?php
  2. $obiekt = '192.168.1.148';
  3. if(filter_var($obiekt, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE)
  4. {
  5.  
  6. echo 'zle';
  7. }
  8. else
  9. {
  10. echo 'ok';
  11. }
  12. ?>
peter13135
ekhm, to filter_var z tego co widzę jest od php 5.2.0 , ja bym chciał żeby mój skrypt działał nawet na 4.3 smile.gif

może mam troche zbyt duże wymagania, ale myślę że da się to zrobić w preg_match :/ czy czymś innym coby działało pod 4.3,

edit:// wrzuciłem ten skrypt na hosting i działa

wrzuciłem również skrypt kefirka i niedziała tak samo jak u mnie na localhoscie
qba10
Sorka nie zauważyłem wersji PHP.
Ale swoją drogą nie pora jednak przestawić się już na PHP5 ?
peter13135
hmm, a jak to jest z hostingami? wszystkie (lub prawie wszystkie) obsługują PHP 5 questionmark.gif
no i jaki programik polecacie który ma php5 (coś w stylu krasnala) sam nie bardzo umiem instalować apacha i mysqla
qba10
co do hostingów już ponad 90% (jak nie wiecej) obsługują php 5

ja uzywam i polecam xampp

Osobiście polecam bardziej xampp (obsluga php 5.2.6) a z WebServ maiłem dużo problemów.
kefirek
Cytat(peter13135 @ 29.12.2008, 21:07:07 ) *
hmm, a jak to jest z hostingami? wszystkie (lub prawie wszystkie) obsługują PHP 5
no i jaki programik polecacie który ma php5 (coś w stylu krasnala) sam nie bardzo umiem instalować apacha i mysqla



Ja polecam WebServ według mnie jest dużo lepszy od krasnala mam php5
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.