Zend_Validate-EmailAddress.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15742 -->
  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. <para>
  12. <emphasis>Normale Verwendung</emphasis>
  13. </para>
  14. <para>
  15. Ein Beispiel einer normalen Benutzung ist anbei:
  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. 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>Komplexe lokale Abschnitte</emphasis>
  32. </para>
  33. <para>
  34. <classname>Zend_Validate_EmailAdress</classname> prüft jede gültige Email Adresse mit
  35. RFC2822. 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>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>
  49. geprüft. Standardmäßig werden nur DNS Hostnamen in der Form <code>domain.com</code>
  50. akzeptiert, aber wenn es gewünscht ist, können auch IP Adressen und lokale Hostnamen auch
  51. akzeptiert werden.
  52. </para>
  53. <para>
  54. Um das zu tun, muß eine <classname>Zend_Validate_EmailAddress</classname> Instanz erstellt
  55. werden der ein Parameter übergeben wird, um den Typ des Hostnamens anzugeben der akzeptiert
  56. werden soll. Mehr Details sind in <classname>Zend_Validate_Hostname</classname> inkludiert,
  57. zusammen mit einem Beispiel, wie DNS und lokale Hostnamen, akzeptiert werden wie im Beispiel
  58. das anbei steht:
  59. <programlisting language="php"><![CDATA[
  60. $validator = new Zend_Validate_EmailAddress(
  61. Zend_Validate_Hostname::ALLOW_DNS |
  62. Zend_Validate_Hostname::ALLOW_LOCAL);
  63. if ($validator->isValid($email)) {
  64. // Email Adresse scheint gültig zu sein
  65. } else {
  66. // Email ist ungültig; Gründe ausdrucken
  67. foreach ($validator->getMessages() as $message) {
  68. echo "$message\n";
  69. }
  70. }
  71. ]]></programlisting>
  72. </para>
  73. <para>
  74. <emphasis>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
  79. verwendet werden um zu prüfen ob ein MX (Email) Eintrag im DNS Eintrag für den Hostnamen der
  80. Email existiert. Das zeigt ob der Hostname Emails akzeptiert, sagt aber nicht aus, ob die
  81. genaue Email Adresse selbst gültig ist.
  82. </para>
  83. <para>
  84. Die MX Prüfung ist standardmäßig nicht eingeschaltet und wird aktuell nur durch UNIX
  85. Platformen unterstützt. Um die MX Prüfung einzuschalten kann ein zweiter Parameter an den
  86. <classname>Zend_Validate_EmailAddress</classname> Konstruktor übergeben werden.
  87. <programlisting language="php"><![CDATA[
  88. $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
  89. true);
  90. ]]></programlisting>
  91. Alternativ kann entweder <constant>TRUE</constant> oder <constant>FALSE</constant> an
  92. <code>$validator->setValidateMx()</code> übergeben werden um die MX Prüfung ein- oder
  93. 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
  98. davor, das hierbei das eigene Skript langsamer wird.
  99. </para>
  100. <para>
  101. <emphasis>Internationale Domain Namen prüfen</emphasis>
  102. </para>
  103. <para>
  104. <classname>Zend_Validate_EmailAddress</classname> prüft auch internationale Zeichen prüfen,
  105. die in einigen Domains existieren. Dies ist als Unterstützung für Internationale Domain
  106. Namen (IDN) bekannt. Standardmäßig ist das eingeschaltet. Das kann aber ausgeschaltet werden
  107. indem eine Einstellung geändert wird über das interne
  108. <classname>Zend_Validate_Hostname</classname> Objekt das innerhalb von
  109. <classname>Zend_Validate_EmailAddress</classname> existiert.
  110. <programlisting language="php"><![CDATA[
  111. $validator->hostnameValidator->setValidateIdn(false);
  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
  118. zu prüfen.
  119. </para>
  120. <para>
  121. <emphasis>Top Level Domains prüfen</emphasis>
  122. </para>
  123. <para>
  124. Standardmäßig wird ein Hostname mit einer List von bekannten TLDs geprüft. Das ist
  125. standardmäßig aktiviert, kann aber ausgeschaltet werden indem die Einstellung über das
  126. interne <classname>Zend_Validate_Hostname</classname> geändert wird, das innerhalb von
  127. <classname>Zend_Validate_EmailAddress</classname> existiert.
  128. <programlisting language="php"><![CDATA[
  129. $validator->hostnameValidator->setValidateTld(false);
  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
  136. Hostnamen zu prüfen.
  137. </para>
  138. </sect2>
  139. <!--
  140. vim:se ts=4 sw=4 et:
  141. -->