Jak sprawdzić poprawność adresu e-mail w PHP5?

Niedawno w sieci trafiłem na świeży post dotyczący sprawdzania poprawności e-maila w PHP – był on tak słaby, że zmotywowałem się do napisania jak można to zrobić lepiej a przynajmniej w miarę dobrze 🙂

/**
* Validate e-mail
* @param string $email
* @return bool
*/
function valid_email($email)
{
if (empty($email) || !strpos($email, '@'))
{
return false;
}
list($email_name, $email_domain) = explode("@", $email);
return filter_var($email, FILTER_VALIDATE_EMAIL) && checkdnsrr($email_domain, "MX");
}

Słowem wyjaśnienia:

  1. sprawdzamy, czy parametr $email jest pusty – empty jest bardzo szybkie
  2. sprawdzamy czy w $email brakuje znaku @, jeśli tak zwracamy false – brak „małpy” skutkuje rzuceniem notice przez funkcję list
  3. rozbijamy podany e-mail na nazwę konta i nazwę domeny
  4. sprawdzamy czy podana zmienna jest poprawnym adresem e-mail
  5. sprawdzamy czy domena z podanego adresu e-mail istnieje

Uwagi:

  • funkcja filter_var jest dostępna od PHP 5.2.0
  • funkcja checkdnsrr na platformach Windows jest dostępna dopiero od PHP 5.3.0
Ten wpis został opublikowany w kategorii Informatyka, PHP. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *