Zend_Validate-EmailAddress.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15346 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.email_address">
  5. <title>EmailAddress</title>
  6. <para>
  7. <classname>Zend_Validate_EmailAddress</classname> permet de valider une adresse émail.
  8. Ce validateur éclate d'abord l'adresse émail entre partie locale et domaine et essaie de
  9. valider ces deux parties conformément aux spécifications des adresses émail et des noms de
  10. domaine.
  11. </para>
  12. <para><emphasis>Utilisation de base</emphasis></para>
  13. <para>
  14. Exemple basique : <programlisting language="php"><![CDATA[
  15. $validateur = new Zend_Validate_EmailAddress();
  16. if ($validateur->isValid($email)) {
  17. // l'email est valide
  18. } else {
  19. // l'email est invalide ; afficher pourquoi
  20. foreach ($validateur->getMessages() as $message) {
  21. echo "$message\n";
  22. }
  23. }
  24. ]]></programlisting> Ceci validera l'adresse émail <code>$email</code> et, en cas d'échec,
  25. fournira des messages d'erreur informatifs via
  26. <code>$validator-&gt;getMessages()</code>.
  27. </para>
  28. <para><emphasis>Parties locales complexes</emphasis></para>
  29. <para>
  30. <classname>Zend_Validate_EmailAddress</classname> validera toute adresse émail
  31. conforme à la RFC2822. Comme par exemple <code>bob@domaine.com</code>,
  32. <code>bob+jones@domaine.fr</code>, <code>"bob@jones"@domaine.com</code> et <code>"bob
  33. jones"@domaine.com</code>. Quelques formats d'émail obsolètes ne seront pas validés (comme
  34. tout émail contenant un retour chariot ou un caractère "\").
  35. </para>
  36. <para><emphasis>Validation de différents types de noms de domaine</emphasis></para>
  37. <para>
  38. La partie domaine d'une adresse émail est validée via <link
  39. linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>.
  40. Par défaut, seules les domaines qualifiés sous la forme <code>domaine.com</code> sont
  41. acceptés, même si, il vous est possible d'accepter les adresses IP et les domaines locaux
  42. également.
  43. </para>
  44. <para>
  45. Afin de réaliser cette opération, il vous faut instancier
  46. <classname>Zend_Validate_EmailAddress</classname> en lui passant un paramètre indiquant le
  47. type de nom de domaine à accepter. Les détails sont disponibles dans
  48. <classname>Zend_Validate_EmailAddress</classname> mais vous trouverez ci-dessous un exemple
  49. illustrant comment accepter les noms de domaines qualifiés et les hôtes locaux :
  50. <programlisting language="php"><![CDATA[
  51. $validateur = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
  52. if ($validateur->isValid($email)) {
  53. // l'email est valide
  54. } else {
  55. // l'email est invalide ; afficher pourquoi
  56. foreach ($validateur->getMessages() as $message) {
  57. echo "$message\n";
  58. }
  59. }
  60. ]]></programlisting></para>
  61. <para>
  62. <emphasis>Vérification que le nom de domaine accepte réellement
  63. l'émail</emphasis>
  64. </para>
  65. <para>
  66. Le fait qu'une adresse électronique est dans un format correct, ne signifie pas
  67. nécessairement que l'adresse électronique existe en réalité. Pour aider résoudre ce
  68. problème, vous pouvez utiliser la validation MX pour vérifier si une entrée MX (l'émail)
  69. existe dans le l'enregistrement du DNS pour le nom de domaine de l'émail. Cela vous dit que
  70. le nom de domaine accepte l'émail, mais ne vous dit pas que l'adresse électronique elle-même
  71. est valable.
  72. </para>
  73. <para>
  74. La vérification MX n'est pas active par défaut et est seulement supporté par des
  75. plates-formes UNIX pour l'instant. Pour activer la vérification MX vous pouvez passer un
  76. deuxième paramètre au constructeur <classname>Zend_Validate_EmailAddress</classname>.
  77. <programlisting language="php"><![CDATA[
  78. $validator =
  79. new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
  80. true);
  81. ]]></programlisting> Alternativement vous pouvez passer soit <code>true</code> soit
  82. <code>false</code> à <code>$validator-&gt;setValidateMx()</code> pour activer ou désactiver
  83. la validation MX.
  84. </para>
  85. <para>
  86. En activant ce paramètre, les fonctions de réseau seront utilisés pour vérifier la
  87. présence d'un enregistrement MX sur le nom de domaine de l'adresse électronique que vous
  88. voulez valider. Faîtes cependant attention, cela ralentira probablement votre
  89. scénario.
  90. </para>
  91. <para><emphasis>Valider les noms de domaines internationaux</emphasis></para>
  92. <para>
  93. <classname>Zend_Validate_EmailAddress</classname> peut aussi vérifier les caractères
  94. internationaux qui existent dans quelques domaines. Ceci est connu comme le support de Nom
  95. de Domaine International (IDN). Celui-ci est activé par défaut, quoique vous puissiez le
  96. mettre hors service en changeant le paramètre via l'objet interne
  97. <classname>Zend_Validate_Hostname</classname> qui existe dans
  98. <classname>Zend_Validate_EmailAddress</classname>. <programlisting language="php"><![CDATA[
  99. $validator->hostnameValidator->setValidateIdn(false);
  100. ]]></programlisting> De plus amples informations concernant l'utilisation de
  101. <code>setValidateIdn()</code> sont présentes dans la <link
  102. linkend="zend.validate.set.hostname">documentation de
  103. <classname>Zend_Validate_Hostname</classname></link>.
  104. </para>
  105. <para>
  106. Notez cependant que les IDNs sont seulement validés si vous autorisez la validation
  107. des nom de domaines.
  108. </para>
  109. <para><emphasis>Validation des "Top Level Domains"</emphasis></para>
  110. <para>
  111. Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Ceci est
  112. activé par défaut, quoique vous puissiez le mettre hors service en changeant le paramètre
  113. via l'objet <classname>Zend_Validate_Hostname</classname> interne qui existe dans
  114. <classname>Zend_Validate_EmailAddress</classname>. <programlisting language="php"><![CDATA[
  115. $validator->hostnameValidator->setValidateTld(false);
  116. ]]></programlisting> De plus amples informations concernant l'utilisation de
  117. <code>setValidateTld()</code> sont présentes dans la <link
  118. linkend="zend.validate.set.hostname">documentation de
  119. <classname>Zend_Validate_Hostname</classname></link>.
  120. </para>
  121. <para>
  122. Notez cependant que les TLDs sont seulement validés si vous autorisez la validation
  123. des nom de domaines.
  124. </para>
  125. </sect2>