| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 17407 -->
- <!-- Reviewed: no -->
- <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>Utilisation de base</emphasis></para>
- <para>
- Exemple basique : <programlisting language="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 <varname>$email</varname> et, en cas d'échec,
- fournira des messages d'erreur informatifs via
- <code>$validator->getMessages()</code>.
- </para>
- <para><emphasis>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>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 language="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>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 language="php"><![CDATA[
- $validator =
- new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
- true);
- ]]></programlisting> Alternativement vous pouvez passer soit <constant>TRUE</constant> soit
- <constant>FALSE</constant> à <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>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 language="php"><![CDATA[
- $validator->hostnameValidator->setValidateIdn(false);
- ]]></programlisting> De plus amples informations concernant l'utilisation de
- <methodname>setValidateIdn()</methodname> 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>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 language="php"><![CDATA[
- $validator->hostnameValidator->setValidateTld(false);
- ]]></programlisting> De plus amples informations concernant l'utilisation de
- <methodname>setValidateTld()</methodname> 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>
|