Zend_Validate-EmailAddress.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 14978 -->
  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. Der Prüfer teilt
  8. zuerst die Email Adresse in lokalen Teil @ hostname und versucht diese mit bekannten Spezifikationen für Email Adressen und Hostnamen
  9. zu prüfen.
  10. </para>
  11. <para>
  12. <emphasis role="strong">Normale Verwendung</emphasis>
  13. </para>
  14. <para>
  15. Ein Beispiel einer normalen Benutzung ist anbei:
  16. <programlisting role="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. ]]>
  27. </programlisting>
  28. Das prüft die Email Adresse <code>$email</code> und gibt bei einem Fehler über
  29. <code>$validator->getMessages()</code> eine nützliche Fehlermeldung aus.
  30. </para>
  31. <para>
  32. <emphasis role="strong">Komplexe lokale Abschnitte</emphasis>
  33. </para>
  34. <para>
  35. <classname>Zend_Validate_EmailAdress</classname> prüft jede gültige Email Adresse mit RFC2822.
  36. Gültige Email Adressen sind zum Beispiel <code>bob@domain.com</code>,
  37. <code>bob+jones@domain.us</code>, <code>"bob@jones"@domain.com</code> und
  38. <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. <para>
  45. <emphasis role="strong">Prüfen von unterschiedlichen Typen von Hostnamen</emphasis>
  46. </para>
  47. <para>
  48. Der Teil des Hostnamens einer Email Adresse wird mit
  49. <link linkend="zend.validate.set.hostname"><classname>Zend_Validate_Host</classname></link> geprüft. Standardmäßig
  50. werden nur DNS Hostnamen in der Form <code>domain.com</code> akzeptiert, aber wenn es gewünscht ist,
  51. können auch IP Adressen und lokale Hostnamen auch akzeptiert werden.
  52. </para>
  53. <para>
  54. Um das zu tun, muß eine <classname>Zend_Validate_EmailAddress</classname> Instanz erstellt werden der ein Parameter
  55. übergeben wird, um den Typ des Hostnamens anzugeben der akzeptiert werden soll. Mehr Details
  56. sind in <classname>Zend_Validate_Hostname</classname> inkludiert, zusammen mit einem Beispiel, wie DNS
  57. und lokale Hostnamen, akzeptiert werden wie im Beispiel das anbei steht:
  58. <programlisting role="php"><![CDATA[
  59. $validator = new Zend_Validate_EmailAddress(
  60. Zend_Validate_Hostname::ALLOW_DNS |
  61. Zend_Validate_Hostname::ALLOW_LOCAL);
  62. if ($validator->isValid($email)) {
  63. // Email Adresse scheint gültig zu sein
  64. } else {
  65. // Email ist ungültig; Gründe ausdrucken
  66. foreach ($validator->getMessages() as $message) {
  67. echo "$message\n";
  68. }
  69. }
  70. ]]>
  71. </programlisting>
  72. </para>
  73. <para>
  74. <emphasis role="strong">Prüfen ob der Hostname aktuell Emails akzeptiert</emphasis>
  75. </para>
  76. <para>
  77. Nur weil eine Email Adresse im richtigen Format ist, heißt das notwendigerweise nicht das
  78. die Email Adresse aktuell auch existiert. Um dieses Problem zu lösen, kann MX Prüfung verwendet
  79. werden um zu prüfen ob ein MX (Email) Eintrag im DNS Eintrag für den Hostnamen der Email existiert.
  80. Das zeigt ob der Hostname Emails akzeptiert, sagt aber nicht aus, ob die genaue Email Adresse
  81. selbst gültig ist.
  82. </para>
  83. <para>
  84. Die MX Prüfung ist standardmäßig nicht eingeschaltet und wird aktuell nur durch UNIX Platformen unterstützt.
  85. Um die MX Prüfung einzuschalten kann ein zweiter Parameter an den <classname>Zend_Validate_EmailAddress</classname>
  86. Konstruktor übergeben werden.
  87. <programlisting role="php"><![CDATA[
  88. $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
  89. true);
  90. ]]>
  91. </programlisting>
  92. Alternativ kann entweder <code>true</code> oder <code>false</code> an
  93. <code>$validator->setValidateMx()</code> übergeben werden um die MX Prüfung ein- oder auszuschalten.
  94. </para>
  95. <para>
  96. Durch das einschalten dieser Option werden Netzwerk Funktionen verwendet um zu Prüfen ob ein
  97. MX Eintrag am Hostnamen der Email Adresse existiert, welche geprüft werden soll. Vorsicht davor,
  98. das hierbei das eigene Skript langsamer wird.
  99. </para>
  100. <para>
  101. <emphasis role="strong">Internationale Domain Namen prüfen</emphasis>
  102. </para>
  103. <para>
  104. <classname>Zend_Validate_EmailAddress</classname> prüft auch internationale Zeichen prüfen, die in einigen
  105. Domains existieren. Dies ist als Unterstützung für Internationale Domain Namen (IDN) bekannt.
  106. Standardmäßig ist das eingeschaltet. Das kann aber ausgeschaltet werden indem eine Einstellung
  107. geändert wird über das interne <classname>Zend_Validate_Hostname</classname> Objekt das innerhalb von
  108. <classname>Zend_Validate_EmailAddress</classname> existiert.
  109. <programlisting role="php"><![CDATA[
  110. $validator->hostnameValidator->setValidateIdn(false);
  111. ]]>
  112. </programlisting>
  113. Weitere Informationen über die Verwendung von <code>setValidateIdn()</code> gibt es
  114. in der <classname>Zend_Validate_Hostname</classname> Dokumentation.
  115. </para>
  116. <para>
  117. Es sollte darauf geachtet werden das IDNs nur geprüft werden wenn erlaubt ist DNS Hostnamen zu prüfen.
  118. </para>
  119. <para>
  120. <emphasis role="strong">Top Level Domains prüfen</emphasis>
  121. </para>
  122. <para>
  123. Standardmäßig wird ein Hostname mit einer List von bekannten TLDs geprüft. Das ist standardmäßig
  124. aktiviert, kann aber ausgeschaltet werden indem die Einstellung über das interne
  125. <classname>Zend_Validate_Hostname</classname> geändert wird, das innerhalb von
  126. <classname>Zend_Validate_EmailAddress</classname> existiert.
  127. <programlisting role="php"><![CDATA[
  128. $validator->hostnameValidator->setValidateTld(false);
  129. ]]>
  130. </programlisting>
  131. Mehr Informationen über die Verwendung von <code>setValidateTld()</code> gibt es in der
  132. <classname>Zend_Validate_Hostname</classname> Dokumentation.
  133. </para>
  134. <para>
  135. Es sollte darauf geachtet werden das TLDs nur geprüft werden wenn es auch erlaubt ist DNS Hostnamen zu prüfen.
  136. </para>
  137. </sect2>
  138. <!--
  139. vim:se ts=4 sw=4 et:
  140. -->