• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak sprawdzić poprawność numeru telefonu w PHP?

0 głosów
4,776 wizyt
pytanie zadane 31 października 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

Witam, mam problem, chodzi o to że chcę sprawdzić czy user podał prawidłowy numer telefonu. 

    $numer = $_POST['numer'];
    if(strlen($numer)!=9 || !is_int($numer))
    {
      $udana_rejestracja = false;
      $_SESSION['e-numer'] = "Wpisz poprawny numer telefonu!";
    }

Bo nie wiem czy ten if jest prawidłowy. Bo user musi wpisać 9 cyfr. W przeciwnym wypadku wyświetli mu się komunikat o błędzie. Jak prawidłowo powinno wyglądać zapytanie?

2 odpowiedzi

+1 głos
odpowiedź 11 listopada 2016 przez Mateusz Domurad Początkujący (400 p.)
$numer = $_POST['numer'];
if(strlen($numer)!=9 && !is_int($numer))
{
  $udana_rejestracja = false;
  $_SESSION['e-numer'] = "Wpisz poprawny numer telefonu!";
}

 

komentarz 11 listopada 2016 przez xandros Nałogowiec (29,420 p.)
numer z posta może być stringiem, więc zawsze is_int będzie zwracał false
komentarz 11 listopada 2016 przez Mateusz Domurad Początkujący (400 p.)

Racja. W takim przypadku jak najbardziej funkcja is_numeric() będzie odpowiednia do tego zadania.

$number = 'aaa';

if ( strlen($number) != 9 && !is_numeric($number) ) {
    echo 'Numer nie jest prawidłowy';
} else {
    echo 'Numer jest prawidłowy';
}

W tym przypadku numer będzie nieprawidłowy, ponieważ jest to string.

 

Pozdrawiam!

komentarz 11 listopada 2016 przez xandros Nałogowiec (29,420 p.)
czyli przy 88888.888 bedzie zwracal true

radze raczej jakiegoś regexpa poszukać, albo samemu wykminić
komentarz 11 listopada 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
dzięki za pomoc kolego, bo zobaczyłem w necie is_int() i myślałem że to jest instrukcja aby sprawdzić czy liczba jest numerem.
komentarz 12 listopada 2016 przez Mateusz Domurad Początkujący (400 p.)

Miałem teraz więcej czasu, więc pokminiłem trochę z tym numerem telefonu:

$number = '+48123456789';

if ( ! preg_match('^\+48[0-9]{9}$^', $number) ) {
echo 'Numer nie jest prawidłowy';
} else {
echo 'Numer jest prawidłowy';
}

Aby numer telefonu był prawidłowy musi być w postaci np: +48123456789

Pozdrawiam

komentarz 12 listopada 2016 przez xandros Nałogowiec (29,420 p.)
a co z numerami zagranicznymi?
0 głosów
odpowiedź 31 października 2016 przez Fenix Nałogowiec (26,750 p.)
Najlepiej taka walidacje, zrobic po stronie kliena w js uzywajac wyrazen regularnych.

 

Dokumentacja:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp

Online sprawdzacz regexpow:

https://regex101.com/

PS: W lewym dolnym rogu masz legende, regexpow naprawde warto sie nauczyc. Bardzo uprzyjemnia Ci zycie.
2
komentarz 31 października 2016 przez Ivan Maniak (60,650 p.)
Muszę się nie zgodzić z tym, że najlepiej wykonać walidację po stronie klienta.

Co jeżeli JavaScript będzie wyłączony i wyślemy cokolwiek na serwer?
Co jeżeli ktoś po prostu wejdzie pod adres i wyśle nam jakiś tekst?

Najlepiej jest wykonać walidacje po stronie serwera*, a "ewentualnie" dodać ją po stronie klienta.
2
komentarz 31 października 2016 przez kubaapk Nałogowiec (44,270 p.)
A jak wyłączę js to co wtedy? ( ͡° ͜ʖ ͡°)
komentarz 31 października 2016 przez Fenix Nałogowiec (26,750 p.)
To zalezy jeszcze czego, bo jesli chodzi o walidacje nr telefonu, to najczesciej czeka sie na zwrotna wiadomosc i zalatwia sprawa socketami (jesli chodzi o mikro-transakcje), lub poprzez ajax, nie wydaje mi sie aby ktos robil cokolwiek co po wpisaniu nr'u zmienialo by caly content a nie tylko czesc.
komentarz 31 października 2016 przez Ivan Maniak (60,650 p.)
I tak zawsze musisz wykonać walidację po stronie serwera, nie ważne co byś nie robił. Wtedy w 99% możesz czuć się bezpiecznie.

Jeżeli coś robisz przez przeglądarkę to oznacza, że klient musi mieć link. Gdy ktoś się postara i wejdzie do kodu, i znajdzie ten link to będzie miał otwartą drogę, aby wysłać śmieszne kotki, zamiast numeru telefonu :)

Podobne pytania

–1 głos
1 odpowiedź 682 wizyt
pytanie zadane 1 lutego 2017 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)
0 głosów
4 odpowiedzi 4,390 wizyt
pytanie zadane 14 października 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)
+1 głos
0 odpowiedzi 781 wizyt

93,742 zapytań

142,677 odpowiedzi

323,296 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...