Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie czy w POST zostało podane poprawne ip
Forum PHP.pl > Forum > Przedszkole
rift
Witam, mam takie pytanie jak napisać funkcje która by sprawdzała ze w podanym polu jest wpisane ip jeżeli nie pokazywało by błąd.
Myślałem żeby zrobić to za pomocą funkcji preg_match ale jeżeli pozwolę na wpisywanie liczb od 0-9 i . to osoba ktora bedzie podawac ip bedzie mogła podac takie ip 999.999.999.999 albo np same kropki wiec mogłby mi ktos napisac jakis przykład jak zabezpieczyc żeby sprawdzało czy podane ip jest prawdziwe.
Pozdrawiam.
zegarek84
wyrażenie regularne:
Kod
'/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/'
likemandrake
Kawałek kodu klasy Zend_Validate_Ip biggrin.gif
  1. <?php
  2. public function isValid($value)
  3.    {
  4.        $valueString = (string) $value;
  5.  
  6.        $this->_setValue($valueString);
  7.  
  8.        if ((ip2long($valueString) === false) || (long2ip(ip2long($valueString)) !== $valueString)) {
  9.            if (!function_exists('inet_pton')) {
  10.                $this->_error();
  11.                return false;
  12.            } else if ((@inet_pton($value) === false) ||(inet_ntop(@inet_pton($value)) !== $valueString)) {
  13.                $this->_error();
  14.                return false;
  15.            }
  16.        }
  17.  
  18.        return true;
  19.    }
  20. ?>
rift
Dzięki za tak szybką odp.

Wszystko ładnie działa.

Pozdrawiam winksmiley.jpg
likemandrake
A wyrażenie mogłoby być takie np.:

Kod
/^(?:(?:[1-9]?[0-9]|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5]))\.){4}$/


Tylko, że przy tym wyrażeniu, do sprawdzanego ciągu tekstowego trzeba na końcu dodać jeden znak kropki, napewno to nie zmniejszy bezpieczeństwa, ale dzięki temu uprościło to nam samo wyrażenie smile.gif
zegarek84
dla tej 3 cyfrowej wersji:
Kod
[1-2][0-5]{2}

nie przejdzie 106-109; 116-119..... 246-249 guitar.gif
likemandrake
Hmmmm racja smile.gif Taka duża gafa winksmiley.jpg

Poprawione, dodatkowo wprowadziłem kilka dodatkowych zmian
zegarek84
teraz mniejsza happy.gif
Kod
2[0-5]{2}

i teraz:
206-209, 216-219..... 246-249 biggrin.gif winksmiley.jpg
likemandrake
A daj ty mi spokój tongue.gif:P:P zaraz będzie działało tongue.gif Zmęczenie robi swoje biggrin.gif

Pooooprawione tongue.gif
zegarek84
na forum Excela mi się już nudziło ;p - a że teraz już używam OpenOffice to VBA w Excelu nie wystartuje i mogę tylko formułkami tablicowymi się bawić dlatego się tutaj na PHP przerzuciłem ^-^
likemandrake
W Twojej regule, przy pomocy [01]?[0-9][0-9]? można wpisać:

00
...
09
000
...
007
008
009

tongue.gif
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.