| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <!-- EN-Revision: 12116 -->
- <sect2 id="zend.validate.set.hostname">
- <title>Hostname</title>
- <para><classname>Zend_Validate_Hostname</classname> vous permet de valider un nom de domaine sur la base d'un ensemble de
- spécifications connues. Il est ainsi possible de valider trois types différents de noms de domaine : un nom de
- domaine qualifié (ex : domaine.com), une adresse IP (ex : 1.2.3.4) ou un nom de domaine local (ex : localhost). Par
- défaut, seul les noms de domaine qualifiés sont acceptés.</para>
- <para><emphasis role="strong">Utilisation basique</emphasis></para>
- <para>Exemple simple : <programlisting role="php"><![CDATA[
- $validateur = new Zend_Validate_Hostname();
- if ($validateur->isValid($domaine)) {
- // le nom de domaine est valide
- } else {
- // le nom de domaine est invalide ; afficher pourquoi
- foreach ($validateur->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting> Ceci validera le domaine <code>$domaine</code> et, en cas d'échec, fournira des messages d'erreur
- informatifs via <code>$validator->getMessages()</code>.</para>
- <para><emphasis role="strong">Validation de différents types de noms de domaine</emphasis></para>
- <para>Il peut se trouver que vous souhaitez valider des adresses IP, des noms de domaine locaux ou toute combinaison
- de tous les types disponibles. Cette opération peut être effectuée en passant un paramètre à
- <classname>Zend_Validate_Hostname</classname> au moment de l'instanciation. Le paramètre doit être un entier qui détermine
- quels types de noms de domaine sont admis. Il est recommandé d'utiliser les constantes de la classe
- <classname>Zend_Validate_Hostname</classname>.</para>
- <para>Les constantes de <classname>Zend_Validate_Hostname</classname> sont : <code>ALLOW_DNS</code> qui autorise uniquement
- les noms de domaine qualifiés, <code>ALLOW_IP</code> qui autorise les adresses IP, <code>ALLOW_LOCAL</code> qui
- autorise les domaines locaux et <code>ALLOW_ALL</code> qui autorise les trois types précédents. Pour vérifier
- uniquement les adresses IP, vous pouvez utiliser l'exemple suivant : <programlisting role="php"><![CDATA[
- $validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
- if ($validateur->isValid($hostname)) {
- // le nom de domaine est valide
- } else {
- // le nom de domaine est invalide ; afficher pourquoi
- foreach ($validateur->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting></para>
- <para>Vous pouvez utiliser <code>ALLOW_ALL</code> pour accepter tous les types de domaines. De même, vous pouvez
- créer des configurations combinant ces différents types. Par exemple, pour accepter les domaines qualifiés et les
- domaines locaux, instanciez votre objet <classname>Zend_Validate_Hostname</classname> de la manière suivante : <programlisting
- role="php"><![CDATA[
- $validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
- Zend_Validate_Hostname::ALLOW_IP);
- ]]></programlisting></para>
- <para><emphasis role="strong">Validation de Nom de Domaine International (IDN)</emphasis></para>
- <para>Certains noms de domaines nationaux (Country Code Top Level Domains ou ccTLD), comme .de (Allemagne), supporte
- les caractères internationaux dans leurs noms de domaine. Ceci est connu sous le nom de Nom de Domaine International
- (IDN). Ces domaines peuvent être vérifiés par <classname>Zend_Validate_Hostname</classname> grâce aux caractères étendus qui
- sont utilisés dans le processus de validation.</para>
- <para>Pour l'instant, la liste des ccTLD supportés inclus : <itemizedlist>
- <listitem>
- <para>at (Autriche)</para>
- </listitem>
- <listitem>
- <para>ch (Suisse)</para>
- </listitem>
- <listitem>
- <para>li (Liechtenstein)</para>
- </listitem>
- <listitem>
- <para>de (Allemagne)</para>
- </listitem>
- <listitem>
- <para>fi (Finlande)</para>
- </listitem>
- <listitem>
- <para>hu (Hongrie)</para>
- </listitem>
- <listitem>
- <para>no (Norvège)</para>
- </listitem>
- <listitem>
- <para>se (Suède)</para>
- </listitem>
- </itemizedlist></para>
- <para>Pour vérifier un domaine IDN c'est aussi simple que d'utiliser le validateur standard de nom de domaine
- puisque la validation IDN est activé par défaut. Si vous voulez mettre hors service la validation IDN, cela peut
- être fait par le passage d'un paramètre au constructeur <classname>Zend_Validate_Hostname</classname> ou via la méthode
- <code>$validator->setValidateIdn()</code>.</para>
- <para>Vous pouvez aussi désactiver la validation IDN en passant un second paramètre au constructeur du
- <classname>Zend_Validate_Hostname</classname> comme ceci : <programlisting role="php"><![CDATA[
- $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
- false);
- ]]></programlisting>
- Alternativement vous pouvez passer soit <code>true</code> soit <code>false</code> à
- <code>$validator->setValidateIdn()</code> pour activer ou désactiver la validation IDN. Si vous essayez de
- vérifier un nom de domaine IDN qui n'est pas actuellement soutenu il est probable qu'il retournera une erreur s'il y
- a des caractères internationaux. Quand un fichier de ccTLD spécifiant les caractères supplémentaires n'existe pas
- dans "Zend/Validate/Hostname",une validation de nom de domaine normale est réalisée.</para>
- <para>Notez cependant que les IDNs sont seulement validés si vous autorisez la validation des noms de
- domaine.</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. Si cette fonctionnalité n'est pas
- nécessaire, elle peut être désactivée de la même façon que la désactivation du support des IDNs. Vous pouvez
- désactiver la validation TLD en passant un troisième paramètre au constructeur de
- <classname>Zend_Validate_Hostname</classname>. Dans l'exemple ci-dessous, la validation IDN est supportée via le second
- paramètre. <programlisting role="php"><![CDATA[
- $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
- true,
- false);
- ]]></programlisting>
- Alternativement vous pouvez passer soit <code>true</code> soit <code>false</code> à
- <code>$validator->setValidateTld()</code> pour activer ou désactiver la validation TLD.</para>
- <para>Notez cependant que les TLDs sont seulement validés si vous autorisez la validation des noms de
- domaine.</para>
- </sect2>
|