| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 17134 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.validate.set.email_address">
- <title>Email Adresse</title>
- <para>
- <classname>Zend_Validate_EmailAddress</classname> 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.
- </para>
- <para>
- <emphasis>Normale Verwendung</emphasis>
- </para>
- <para>
- Ein Beispiel einer normalen Benutzung ist anbei:
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_EmailAddress();
- if ($validator->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";
- }
- }
- ]]></programlisting>
- Das prüft die Email Adresse <varname>$email</varname> und gibt bei einem Fehler über
- <code>$validator->getMessages()</code> eine nützliche Fehlermeldung aus.
- </para>
- <para>
- <emphasis>Komplexe lokale Abschnitte</emphasis>
- </para>
- <para>
- <classname>Zend_Validate_EmailAdress</classname> prüft jede gültige Email Adresse mit
- RFC2822. Gültige Email Adressen sind zum Beispiel <code>bob@domain.com</code>,
- <code>bob+jones@domain.us</code>, <code>"bob@jones"@domain.com</code> und
- <code>"bob jones"@domain.com</code>
- </para>
- <para>
- Einige Email Formate werden aktuell nicht geprüft (z.B. Zeilenumbruch Zeichen oder ein
- "\" Zeichen in einer Email Adresse).
- </para>
- <para>
- <emphasis>Prüfen von unterschiedlichen Typen von Hostnamen</emphasis>
- </para>
- <para>
- Der Teil des Hostnamens einer Email Adresse wird mit
- <link linkend="zend.validate.set.hostname"><classname>Zend_Validate_Host</classname></link>
- geprüft. Standardmäßig werden nur DNS Hostnamen in der Form <code>domain.com</code>
- akzeptiert, aber wenn es gewünscht ist, können auch IP Adressen und lokale Hostnamen auch
- akzeptiert werden.
- </para>
- <para>
- Um das zu tun, muß eine <classname>Zend_Validate_EmailAddress</classname> Instanz erstellt
- werden der ein Parameter übergeben wird, um den Typ des Hostnamens anzugeben der akzeptiert
- werden soll. Mehr Details sind in <classname>Zend_Validate_Hostname</classname> inkludiert,
- zusammen mit einem Beispiel, wie DNS und lokale Hostnamen, akzeptiert werden wie im Beispiel
- das anbei steht:
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_EmailAddress(
- Zend_Validate_Hostname::ALLOW_DNS |
- Zend_Validate_Hostname::ALLOW_LOCAL);
- if ($validator->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";
- }
- }
- ]]></programlisting>
- </para>
- <para>
- <emphasis>Prüfen ob der Hostname aktuell Emails akzeptiert</emphasis>
- </para>
- <para>
- 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.
- </para>
- <para>
- 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
- <classname>Zend_Validate_EmailAddress</classname> Konstruktor übergeben werden.
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
- true);
- ]]></programlisting>
- Alternativ kann entweder <constant>TRUE</constant> oder <constant>FALSE</constant> an
- <code>$validator->setValidateMx()</code> übergeben werden um die MX Prüfung ein- oder
- auszuschalten.
- </para>
- <para>
- 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.
- </para>
- <para>
- <emphasis>Internationale Domain Namen prüfen</emphasis>
- </para>
- <para>
- <classname>Zend_Validate_EmailAddress</classname> 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
- <classname>Zend_Validate_Hostname</classname> Objekt das innerhalb von
- <classname>Zend_Validate_EmailAddress</classname> existiert.
- <programlisting language="php"><![CDATA[
- $validator->hostnameValidator->setValidateIdn(false);
- ]]></programlisting>
- Weitere Informationen über die Verwendung von <methodname>setValidateIdn()</methodname> gibt
- es in der <classname>Zend_Validate_Hostname</classname> Dokumentation.
- </para>
- <para>
- Es sollte darauf geachtet werden das IDNs nur geprüft werden wenn erlaubt ist DNS Hostnamen
- zu prüfen.
- </para>
- <para>
- <emphasis>Top Level Domains prüfen</emphasis>
- </para>
- <para>
- 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 <classname>Zend_Validate_Hostname</classname> geändert wird, das innerhalb von
- <classname>Zend_Validate_EmailAddress</classname> existiert.
- <programlisting language="php"><![CDATA[
- $validator->hostnameValidator->setValidateTld(false);
- ]]></programlisting>
- Mehr Informationen über die Verwendung von <methodname>setValidateTld()</methodname> gibt es
- in der <classname>Zend_Validate_Hostname</classname> Dokumentation.
- </para>
- <para>
- Es sollte darauf geachtet werden das TLDs nur geprüft werden wenn es auch erlaubt ist DNS
- Hostnamen zu prüfen.
- </para>
- </sect2>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|