Email AdresseZend_Validate_EmailAddress erlaubt die Prüfung von Email Adressen. Der Prüfer teilt
zuerst die Email Adresse in lokalen Teil @ hostname und versucht diese mit bekannten Spezifikationen für Email Adressen und Hostnamen
zu prüfen.
Normale Verwendung
Ein Beispiel einer normalen Benutzung ist anbei:
isValid($email)) {
// Email Adresse scheint gültig zu sein
} else {
// Email Adresse ist ungültig, drucke die Gründe hierfür
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
]]>
Das prüft die Email Adresse $email und gibt bei einem Fehler über
$validator->getMessages() eine nützliche Fehlermeldung aus.
Komplexe lokale AbschnitteZend_Validate_EmailAdress prüft jede gültige Email Adresse mit RFC2822.
Gültige Email Adressen sind zum Beispiel bob@domain.com,
bob+jones@domain.us, "bob@jones"@domain.com und
"bob jones"@domain.com
Einige Email Formate werden aktuell nicht geprüft (z.B. Zeilenumbruch Zeichen oder ein
"\" Zeichen in einer Email Adresse).
Prüfen von unterschiedlichen Typen von Hostnamen
Der Teil des Hostnamens einer Email Adresse wird mit
Zend_Validate_Host geprüft. Standardmäßig
werden nur DNS Hostnamen in der Form domain.com akzeptiert, aber wenn es gewünscht ist,
können auch IP Adressen und lokale Hostnamen auch akzeptiert werden.
Um das zu tun, muß eine Zend_Validate_EmailAddress Instanz erstellt werden der ein Parameter
übergeben wird, um den Typ des Hostnamens anzugeben der akzeptiert werden soll. Mehr Details
sind in Zend_Validate_Hostname inkludiert, zusammen mit einem Beispiel, wie DNS
und lokale Hostnamen, akzeptiert werden wie im Beispiel das anbei steht:
isValid($email)) {
// Email Adresse scheint gültig zu sein
} else {
// Email ist ungültig; Gründe ausdrucken
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
]]>Prüfen ob der Hostname aktuell Emails akzeptiert
Nur weil eine Email Adresse im richtigen Format ist, heißt das notwendigerweise nicht das
die Email Adresse aktuell auch existiert. Um dieses Problem zu lösen, kann MX Prüfung verwendet
werden um zu prüfen ob ein MX (Email) Eintrag im DNS Eintrag für den Hostnamen der Email existiert.
Das zeigt ob der Hostname Emails akzeptiert, sagt aber nicht aus, ob die genaue Email Adresse
selbst gültig ist.
Die MX Prüfung ist standardmäßig nicht eingeschaltet und wird aktuell nur durch UNIX Platformen unterstützt.
Um die MX Prüfung einzuschalten kann ein zweiter Parameter an den Zend_Validate_EmailAddress
Konstruktor übergeben werden.
Alternativ kann entweder true oder false an
$validator->setValidateMx() übergeben werden um die MX Prüfung ein- oder auszuschalten.
Durch das einschalten dieser Option werden Netzwerk Funktionen verwendet um zu Prüfen ob ein
MX Eintrag am Hostnamen der Email Adresse existiert, welche geprüft werden soll. Vorsicht davor,
das hierbei das eigene Skript langsamer wird.
Internationale Domain Namen prüfenZend_Validate_EmailAddress prüft auch internationale Zeichen prüfen, die in einigen
Domains existieren. Dies ist als Unterstützung für Internationale Domain Namen (IDN) bekannt.
Standardmäßig ist das eingeschaltet. Das kann aber ausgeschaltet werden indem eine Einstellung
geändert wird über das interne Zend_Validate_Hostname Objekt das innerhalb von
Zend_Validate_EmailAddress existiert.
hostnameValidator->setValidateIdn(false);
]]>
Weitere Informationen über die Verwendung von setValidateIdn() gibt es
in der Zend_Validate_Hostname Dokumentation.
Es sollte darauf geachtet werden das IDNs nur geprüft werden wenn erlaubt ist DNS Hostnamen zu prüfen.
Top Level Domains prüfen
Standardmäßig wird ein Hostname mit einer List von bekannten TLDs geprüft. Das ist standardmäßig
aktiviert, kann aber ausgeschaltet werden indem die Einstellung über das interne
Zend_Validate_Hostname geändert wird, das innerhalb von
Zend_Validate_EmailAddress existiert.
hostnameValidator->setValidateTld(false);
]]>
Mehr Informationen über die Verwendung von setValidateTld() gibt es in der
Zend_Validate_Hostname Dokumentation.
Es sollte darauf geachtet werden das TLDs nur geprüft werden wenn es auch erlaubt ist DNS Hostnamen zu prüfen.