Zend_Validate-EmailAddress.xml 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17468 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.email_address">
  5. <title>Email Adresse</title>
  6. <para>
  7. <classname>Zend_Validate_EmailAddress</classname> erlaubt die Prüfung von Email Adressen.
  8. Der Prüfer teilt zuerst die Email Adresse in lokalen Teil @ hostname und versucht diese mit
  9. bekannten Spezifikationen für Email Adressen und Hostnamen zu prüfen.
  10. </para>
  11. <sect3 id="zend.validate.set.email_address.basic">
  12. <title>Normale Verwendung</title>
  13. <para>
  14. Ein Beispiel einer normalen Benutzung ist anbei:
  15. </para>
  16. <programlisting language="php"><![CDATA[
  17. $validator = new Zend_Validate_EmailAddress();
  18. if ($validator->isValid($email)) {
  19. // Email Adresse scheint gültig zu sein
  20. } else {
  21. // Email Adresse ist ungültig, drucke die Gründe hierfür
  22. foreach ($validator->getMessages() as $message) {
  23. echo "$message\n";
  24. }
  25. }
  26. ]]></programlisting>
  27. <para>
  28. Das prüft die Email Adresse <varname>$email</varname> und gibt bei einem Fehler über
  29. <code>$validator->getMessages()</code> eine nützliche Fehlermeldung aus.
  30. </para>
  31. </sect3>
  32. <sect3 id="zend.validate.set.email_address.complexlocal">
  33. <title>Komplexe lokale Abschnitte</title>
  34. <para>
  35. <classname>Zend_Validate_EmailAdress</classname> prüft jede gültige Email Adresse mit
  36. RFC2822. Gültige Email Adressen sind zum Beispiel
  37. <code>bob@domain.com</code>, <code>bob+jones@domain.us</code>,
  38. <code>"bob@jones"@domain.com</code> und <code>"bob jones"@domain.com</code>
  39. </para>
  40. <para>
  41. Einige Email Formate werden aktuell nicht geprüft (z.B. Zeilenumbruch Zeichen oder ein
  42. "\" Zeichen in einer Email Adresse).
  43. </para>
  44. </sect3>
  45. <sect3 id="zend.validate.set.email_address.hostnametype">
  46. <title>Prüfen von unterschiedlichen Typen von Hostnamen</title>
  47. <para>
  48. Der Teil des Hostnamens einer Email Adresse wird mit <link
  49. linkend="zend.validate.set.hostname"><classname>Zend_Validate_Host</classname></link>
  50. geprüft. Standardmäßig werden nur DNS Hostnamen in der Form <code>domain.com</code>
  51. akzeptiert, aber wenn es gewünscht ist, können auch IP Adressen und lokale Hostnamen
  52. auch akzeptiert werden.
  53. </para>
  54. <para>
  55. Um das zu tun, muß eine <classname>Zend_Validate_EmailAddress</classname> Instanz
  56. erstellt werden der ein Parameter übergeben wird, um den Typ des Hostnamens anzugeben
  57. der akzeptiert werden soll. Mehr Details sind in
  58. <classname>Zend_Validate_Hostname</classname> inkludiert, zusammen mit einem Beispiel,
  59. wie DNS und lokale Hostnamen, akzeptiert werden wie im Beispiel das anbei steht:
  60. </para>
  61. <programlisting language="php"><![CDATA[
  62. $validator = new Zend_Validate_EmailAddress(
  63. Zend_Validate_Hostname::ALLOW_DNS |
  64. Zend_Validate_Hostname::ALLOW_LOCAL);
  65. if ($validator->isValid($email)) {
  66. // Email Adresse scheint gültig zu sein
  67. } else {
  68. // Email ist ungültig; Gründe ausdrucken
  69. foreach ($validator->getMessages() as $message) {
  70. echo "$message\n";
  71. }
  72. }
  73. ]]></programlisting>
  74. </sect3>
  75. <sect3 id="zend.validate.set.email_address.checkacceptance">
  76. <title>Prüfen ob der Hostname aktuell Emails akzeptiert</title>
  77. <para>
  78. Nur weil eine Email Adresse im richtigen Format ist, heißt das notwendigerweise nicht
  79. das die Email Adresse aktuell auch existiert. Um dieses Problem zu lösen, kann MX
  80. Prüfung verwendet werden um zu prüfen ob ein MX (Email) Eintrag im DNS Eintrag für den
  81. Hostnamen der Email existiert. Das zeigt ob der Hostname Emails akzeptiert, sagt aber
  82. nicht aus, ob die genaue Email Adresse selbst gültig ist.
  83. </para>
  84. <para>
  85. Die MX Prüfung ist standardmäßig nicht eingeschaltet und wird aktuell nur durch UNIX
  86. Platformen unterstützt. Um die MX Prüfung einzuschalten kann ein zweiter Parameter an
  87. den <classname>Zend_Validate_EmailAddress</classname> Konstruktor übergeben werden.
  88. </para>
  89. <programlisting language="php"><![CDATA[
  90. $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
  91. true);
  92. ]]></programlisting>
  93. <para>
  94. Alternativ kann entweder <constant>TRUE</constant> oder <constant>FALSE</constant> an
  95. <code>$validator->setValidateMx()</code> übergeben werden um die MX Prüfung ein- oder
  96. auszuschalten.
  97. </para>
  98. <para>
  99. Durch das einschalten dieser Option werden Netzwerk Funktionen verwendet um zu Prüfen
  100. ob ein MX Eintrag am Hostnamen der Email Adresse existiert, welche geprüft werden soll.
  101. Vorsicht davor, das hierbei das eigene Skript langsamer wird.
  102. </para>
  103. </sect3>
  104. <sect3 id="zend.validate.set.email_address.validateidn">
  105. <title>Internationale Domain Namen prüfen</title>
  106. <para>
  107. <classname>Zend_Validate_EmailAddress</classname> prüft auch internationale Zeichen
  108. prüfen, die in einigen Domains existieren. Dies ist als Unterstützung für
  109. Internationale Domain Namen (IDN) bekannt. Standardmäßig ist das eingeschaltet. Das
  110. kann aber ausgeschaltet werden indem eine Einstellung geändert wird über das interne
  111. <classname>Zend_Validate_Hostname</classname> Objekt das innerhalb von
  112. <classname>Zend_Validate_EmailAddress</classname> existiert.
  113. </para>
  114. <programlisting language="php"><![CDATA[
  115. $validator->hostnameValidator->setValidateIdn(false);
  116. ]]></programlisting>
  117. <para>
  118. Weitere Informationen über die Verwendung von <methodname>setValidateIdn()</methodname>
  119. gibt es in der <classname>Zend_Validate_Hostname</classname> Dokumentation.
  120. </para>
  121. <para>
  122. Es sollte darauf geachtet werden das IDNs nur geprüft werden wenn erlaubt ist DNS
  123. Hostnamen zu prüfen.
  124. </para>
  125. </sect3>
  126. <sect3 id="zend.validate.set.email_address.validatetld">
  127. <title>Top Level Domains prüfen</title>
  128. <para>
  129. Standardmäßig wird ein Hostname mit einer List von bekannten TLDs geprüft. Das ist
  130. standardmäßig aktiviert, kann aber ausgeschaltet werden indem die Einstellung über das
  131. interne <classname>Zend_Validate_Hostname</classname> geändert wird, das innerhalb von
  132. <classname>Zend_Validate_EmailAddress</classname> existiert.
  133. </para>
  134. <programlisting language="php"><![CDATA[
  135. $validator->hostnameValidator->setValidateTld(false);
  136. ]]></programlisting>
  137. <para>
  138. Mehr Informationen über die Verwendung von <methodname>setValidateTld()</methodname>
  139. gibt es in der <classname>Zend_Validate_Hostname</classname> Dokumentation.
  140. </para>
  141. <para>
  142. Es sollte darauf geachtet werden das TLDs nur geprüft werden wenn es auch erlaubt ist
  143. DNS Hostnamen zu prüfen.
  144. </para>
  145. </sect3>
  146. <sect3 id="zend.validate.set.email_address.setmessage">
  147. <title>Setzen von Meldungen</title>
  148. <para>
  149. <classname>Zend_Validate_EmailAddress</classname> verwendet auch
  150. <classname>Zend_Validate_Hostname</classname> um den Teil des Hostnamens einer
  151. angegebenen Email Adresse zu prüfen. Ab Zend Framework 1.10 kann man Meldungen für
  152. <classname>Zend_Validate_Hostname</classname> auch von innerhalb
  153. <classname>Zend_Validate_EmailAddress</classname> setzen.
  154. </para>
  155. <programlisting language="php"><![CDATA[
  156. $validator = new Zend_Validate_EmailAddress();
  157. $validator->setMessages(array(
  158. Zend_Validate_Hostname::UNKNOWN_TLD => 'Ich kenne die TLD nicht')
  159. );
  160. ]]></programlisting>
  161. <para>
  162. Vor Zend Framework 1.10 musste man die Meldungen einem eigenen
  163. <classname>Zend_Validate_Hostname</classname> hinzufügen, und dann diese Prüfung in
  164. <classname>Zend_Validate_EmailAddress</classname> setzen um die eigenen Meldungen
  165. zurückzubekommen.
  166. </para>
  167. </sect3>
  168. </sect2>
  169. <!--
  170. vim:se ts=4 sw=4 et:
  171. -->