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)) return false;
list($email_name, $email_domain) = explode("@", $email);
return
filter_var($email, FILTER_VALIDATE_EMAIL) &&
checkdnsrr($email_domain, "MX");
}
Słowem wyjaśnienia:
- sprawdzamy, czy parametr $email jest pusty
- rozbijamy podany e-mail na nazwę konta i nazwę domeny
- sprawdzamy czy podana zmienna jest poprawnym adresem e-mail
- 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