Zend_Validate-EmailAddress.xml 6.6 KB

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