Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Walidacja adresu e-mail

Jeżeli zbieramy dane od użytkowników za pomocą formularzy, zawsze należy zakładać, że informacje, które podają nam internauci są nieprawidłowe. Sprawdzanie czy użytkownik podał swoje imię lub nazwisko jest proste, ale co zrobić kiedy musimy sprawdzić poprawność adresu e-mail?

Poniższa funkcja języka PHP, sprawdza czy podany ciąg znaków jest adresem e-mail, oraz czy podana domena w ogóle istnieje.

function validateEmail($email) {
     if(preg_match('/^[a-zA-Z0-9][a-zA-Z0-9\._\-&!?#=]*@/', $email)) {
          //początek adresu do znaku @ jest poprawny
          //usuwamy wszystkie znaki znajdujące się przed @ oraz znak @, tak aby została sama domena 
          $url = preg_replace('/^[a-zA-Z0-9][a-zA-Z0-9\._\-&!?#=]*@/', '', $email);
          //sprawdzamy czy domena jest zarejestrowana
          if (!checkdnsrr($url)) {
               //domena nie jest zarejestrowana - adres e-mail jest niepoprawny
               $error = false;
          }
          else {
               //domena jest zarejestrowana - adres e-mail jest poprawny
               $error = true;
          }
     }
     else {
          //adres e-mail jest niepoprawny, ponieważ jego początek zawiera niedozwolone znaki
          $error = false;
     }
     return $error;
}

Jeżeli ciąg znaków przekazany do funkcji w zmiennej $email jest adresem e-mail, to funkcja zwraca true, a jeżeli nie to false.

Aktualizacja: współczesne PHP ma wbudowaną walidację adresu e-mail: filter_var($email, FILTER_VALIDATE_EMAIL). W nowym kodzie zacznij od niej, a powyższą funkcję potraktuj jako przykład połączenia wyrażeń regularnych ze sprawdzeniem DNS (checkdnsrr()).

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, ,

Dodaj komentarz

Odpowiedz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest