Zend_Validate-EmailAddress.xml 6.2 KB

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