E-Mail Syntax Überprüfung mit JavaScript und PHP
December 6, 2007 Computer und Internet, JavaScript, Programmieren No CommentsFormulare im Web sind nett und dienen zur Interaktion mit einem Besucher der Website. Bevor man jedoch etwas mit den Eingaben des Benutzers anfangen will, müssen diese überprüft werden. Einfache Überprüfungen, insbesondere in gängigen Programmiersprachen wie PHP oder JavaScript, sind schnell gemacht und auch für Laien nicht allzu schwer nachvollziehbar.
Geht es jedoch um die Validierung der Syntax von E-Mail Adressen wird das ganze schon komplizierter. Sucht man in Google z.B. nach E-Mail Überprüfung in Formularen ergibt sich ein Suchresultat von ca. 1 Mio Seiten, welche es nun zu durchforsten gilt, um die Spreu vom Weizen zu trennen.
Meist finden sich dabei irgendwelche Forumeinträge, welche zwar Lösungen anbieten, sich jedoch vielfach nur auf das Vorhandensein von je einem String vor und nach dem @ beziehen und somit nicht die gesamte Syntax auf ihre Korrektheit prüfen. Bis man ein paar Varianten ausprobiert und sich für eine zufriedenstellende entscheiden hat, vergeht kostbare Zeit.
Deshalb möchte ich hier zwei Varianten zur Validierung einer E-Mail Adresse - eine Clientseitige mittels JavaScript und eine Serverseitige Überprüfung mittels PHP - als Beispiel zur Verfügung stellen:
Clientseitige Überprüfung mittels JavaScript
Zu beachten ist generell bei Clientseitigen Überprüfungen, dass Sie ohne grosse Mühe umgangen oder manipuliert werden können, da sie - wie der Name schon sagt - auf dem Client, also auf dem ausführenden Rechner des Benutzers erfolgt.
In diesem Codeausschnitt wird eine Funktion/Methode zur Validierung der E-Mail Adresse angelegt:
function checkEmail(email) {
if(email == "")
return false;
var proto = "(mailto:)?";
var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^x80-xff�15�12\"]|[^x80-xff])+\")";
var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*.)*[a-zA-Z0-9][a-zA-Z0-9._-]*.[a-zA-Z]{2,5}";
var regex = "^" + proto + "?" + usr + "@" + domain + "$";
var rgx = new RegExp(regex);
return rgx.exec(email) ? true : false;
}
Um die E-Mail Adresse nun zu überprüfen, kann die Funktion folgendermassen aufgerufen werden:
if (checkEmail(document.yourform.email.value) == false) {
alert("Bitte geben Sie eine gültige E-Mail-Adresse ein.");
document.yourform.email.focus();
return (false);
}
Serverseitige Überprüfung mittels PHP
if($email != '') {
if(!ereg("^[ _a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]{3,})+.([a-zA-Z0-9-]{2,4})$",
$email)) {
echo 'Bitte geben Sie eine gültige E-Mail-Adresse ein.';
}
}
Ich hoffe, mein Post hilft dem Einen oder Anderen, der sich im Umgang mit Formularen noch etwas auf dem Holzweg befindet…
By the way; kann mir jemand ein vernünftiges Syntax-Highlight Plugin empfehlen?!
