| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <!-- EN-Revision: 12150 -->
- <sect2 id="zend.validate.set.email_address">
- <title>EmailAddress</title>
- <para><classname>Zend_Validate_EmailAddress</classname> permet de valider une adresse émail. Ce validateur éclate d'abord
- l'adresse émail entre partie locale et domaine et essaie de valider ces deux parties conformément aux spécifications
- des adresses émail et des noms de domaine.</para>
- <para><emphasis role="strong">Utilisation de base</emphasis></para>
- <para>Exemple basique : <programlisting role="php"><![CDATA[
- $validateur = new Zend_Validate_EmailAddress();
- if ($validateur->isValid($email)) {
- // l'email est valide
- } else {
- // l'email est invalide ; afficher pourquoi
- foreach ($validateur->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting> Ceci validera l'adresse émail <code>$email</code> et, en cas d'échec, fournira des messages
- d'erreur informatifs via <code>$validator->getMessages()</code>.</para>
- <para><emphasis role="strong">Parties locales complexes</emphasis></para>
- <para><classname>Zend_Validate_EmailAddress</classname> validera toute adresse émail conforme à la RFC2822. Comme par exemple
- <code>bob@domaine.com</code>, <code>bob+jones@domaine.fr</code>, <code>"bob@jones"@domaine.com</code> et <code>"bob
- jones"@domaine.com</code>. Quelques formats d'émail obsolètes ne seront pas validés (comme tout émail contenant un
- retour chariot ou un caractère "\").</para>
- <para><emphasis role="strong">Validation de différents types de noms de domaine</emphasis></para>
- <para>La partie domaine d'une adresse émail est validée via <link
- linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>. Par défaut, seules les domaines
- qualifiés sous la forme <code>domaine.com</code> sont acceptés, même si, il vous est possible d'accepter les
- adresses IP et les domaines locaux également.</para>
- <para>Afin de réaliser cette opération, il vous faut instancier <classname>Zend_Validate_EmailAddress</classname> en lui
- passant un paramètre indiquant le type de nom de domaine à accepter. Les détails sont disponibles dans
- <classname>Zend_Validate_EmailAddress</classname> mais vous trouverez ci-dessous un exemple illustrant comment accepter les
- noms de domaines qualifiés et les hôtes locaux : <programlisting role="php"><![CDATA[
- $validateur = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);
- if ($validateur->isValid($email)) {
- // l'email est valide
- } else {
- // l'email est invalide ; afficher pourquoi
- foreach ($validateur->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting></para>
- <para><emphasis role="strong">Vérification que le nom de domaine accepte réellement l'émail</emphasis></para>
- <para>Le fait qu'une adresse électronique est dans un format correct, ne signifie pas nécessairement que l'adresse
- électronique existe en réalité. Pour aider résoudre ce problème, vous pouvez utiliser la validation MX pour vérifier
- 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
- que le nom de domaine accepte l'émail, mais ne vous dit pas que l'adresse électronique elle-même est valable.</para>
- <para>La vérification MX n'est pas active par défaut et est seulement supporté par des plates-formes UNIX pour
- l'instant. Pour activer la vérification MX vous pouvez passer un deuxième paramètre au constructeur
- <classname>Zend_Validate_EmailAddress</classname>. <programlisting role="php"><![CDATA[
- $validator =
- new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
- true);
- ]]></programlisting>
- Alternativement vous pouvez passer soit <code>true</code> soit <code>false</code> à
- <code>$validator->setValidateMx()</code> pour activer ou désactiver la validation MX.</para>
- <para>En activant ce paramètre, les fonctions de réseau seront utilisés pour vérifier la présence d'un
- enregistrement MX sur le nom de domaine de l'adresse électronique que vous voulez valider. Faîtes cependant
- attention, cela ralentira probablement votre scénario.</para>
- <para><emphasis role="strong">Valider les noms de domaines internationaux</emphasis></para>
- <para><classname>Zend_Validate_EmailAddress</classname> peut aussi vérifier les caractères internationaux qui existent dans
- quelques domaines. Ceci est connu comme le support de Nom de Domaine International (IDN). Celui-ci est activé par
- défaut, quoique vous puissiez le mettre hors service en changeant le paramètre via l'objet interne
- <classname>Zend_Validate_Hostname</classname> qui existe dans <classname>Zend_Validate_EmailAddress</classname>. <programlisting
- role="php"><![CDATA[
- $validator->hostnameValidator->setValidateIdn(false);
- ]]></programlisting> De plus amples
- informations concernant l'utilisation de <code>setValidateIdn()</code> sont présentes dans la <link
- linkend="zend.validate.set.hostname">documentation de <classname>Zend_Validate_Hostname</classname></link>.</para>
- <para>Notez cependant que les IDNs sont seulement validés si vous autorisez la validation des nom de
- domaines.</para>
- <para><emphasis role="strong">Validation des "Top Level Domains"</emphasis></para>
- <para>Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Ceci est activé par défaut,
- quoique vous puissiez le mettre hors service en changeant le paramètre via l'objet
- <classname>Zend_Validate_Hostname</classname> interne qui existe dans <classname>Zend_Validate_EmailAddress</classname>. <programlisting
- role="php"><![CDATA[
- $validator->hostnameValidator->setValidateTld(false);
- ]]></programlisting> De plus amples
- informations concernant l'utilisation de <code>setValidateTld()</code> sont présentes dans la <link
- linkend="zend.validate.set.hostname">documentation de <classname>Zend_Validate_Hostname</classname></link>.</para>
- <para>Notez cependant que les TLDs sont seulement validés si vous autorisez la validation des nom de
- domaines.</para>
- </sect2>
|