PHP-Funktion zum Validieren einer E-Mail-Adresse

Mit dieser einfachen PHP-Funktion lässt sich eine E-Mail-Adresse auf syntaktische Richtigkeit prüfen. D.h., der an die Funktion übergebene Wert muss aus für eine E-Mail-Adresse verwendbaren Zeichen bestehen, ein @-Zeichen enthalten gefolgt von einem gültigen Domainnamen.

Angewandt kann diese PHP-Funktion z.B. zur Prüfung von Besuchern, Kunden oder Usern angegebenen E-Mail-Adressen beim Abonnement eines Newsletters, Durchführen eines Bestellvorgangs oder Abschluss einer Registrierung.

Code emailveri()

Der Code funktionierte bis PHP 5.2. Seit dieser Version ist eregi für Prüfung via regulärer Ausdrücke DEPRECATED, seit PHP 7 ganz entfernt. Verwenden Sie stattdessen filter_var().

// E-Mail-Adresse prüfen
function emailveri($email){
if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$",$email)){
return false;
}else{
return true;
}
}

Erläuterung

Mittels eregi() wird eine an die Funktion emailveri() übergebene Variable auf die syntaktischen Struktur einer E-Mail-Adresse geprüft. Bei erfolgreicher Prüfung liefert die Funktion true zurück, andernfalls false.

Diese PHP-Funktion ist vorwiegend zur Validierung einer von einem Anwender in einem Formular angegebenen E-Mail-Adresse vorgesehen. Da PHP serverseitig ausgeführt wird, kann – ausgenommen mit AJAX – die Überprüfung der E-Mail-Adresse via PHP erst nach Absenden des Formulars durchgeführt werden. Die Validierung einer angegebenen E-Mail-Adresse via PHP sollte der zweite Schritt sein und nur als „Fallback” fungieren für Nutzer, die JavaScript deaktiviert haben. Der erste Schritt zur Validierung sollte immer ein beim Verlassen des Eingabefeldes via onblur() oder Absenden des Formulars mittels onsubmit() aufgerufenes JavaScript sein.

PHP 5.2+ filter_var() & FILTER_VALIDATE_EMAIL

Seit PHP 5.2.0 ist Schluss mit aufwendigen Regex für die Validierung von E-Mail-Adressen. Das hat auch den großen Vorteil, dass Domainendungen schon lange nicht mehr auf 3 oder 4 Zeichen (z.B. .info) begrenzt sind. Man spart sich also die permanente Kontrolle seiner regulären Ausdrücke für die Validierung.

Stattdessen verlässt man sich ganz einfach auf filter_var(). Erster Parameter ist der hinsichtlich seiner Syntax zu prüfende Wert, also im Normalfall (Erfolgsfall) ein String, der eine E-Mail-Adresse repräsentiert. Der zweite Parameter ist die Konstante FILTER_VALIDATE_EMAIL. Den Rest erledigt PHP.

filter_var('beispiel@ihedomain.de', FILTER_VALIDATE_EMAIL); sollte also true ergeben, filter_var('beispiel-at-ihedomain.de', FILTER_VALIDATE_EMAIL); hingegen false. In diesem Zusammenhang nochmal der ausdrückliche Hinweis: Es geht um eine Syntaxprüfung! In keinster Weise ist dabei ein Mailserver involviert. Ob unter der E-Mail-Adresse jemand erreichbar ist oder nicht, hat nichts damit zu tun, ob der geprüfte String syntaktisch die Voraussetzung erfüllt, eine E-Mail-Adresse zu sein.

JavaScript-Funktion E-Mail-Adresse validieren

JavaScript-Funktion E-Mail-Adresse validieren

Bei Anmelde-Formularen, Formularen zum Abonnieren eines Newsletters oder ähnlichem, sollten angegebene E-Mail-Adressen nicht erst nach Absenden des Formulars geprüft werden. Vielmehr sollte eine vom Besucher angegebene E-Mail-Adresse bereits beim Absenden des Daten validiert werden und bei negativem Ergebnis der Überprüfung das Formular nicht abgesendet werden.