| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 20794 -->
- <!-- Reviewed: no -->
- <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>Utilisation basique</emphasis></para>
- <para>
- Exemple simple : <programlisting language="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 <varname>$domaine</varname> et, en cas d'échec, fournira
- des messages d'erreur informatifs via <code>$validator->getMessages()</code>.
- </para>
- <para><emphasis>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 :
- <constant>ALLOW_DNS</constant> qui autorise uniquement les noms de domaine qualifiés,
- <constant>ALLOW_IP</constant> qui autorise les adresses IP, <constant>ALLOW_LOCAL</constant> qui autorise
- les domaines locaux et <constant>ALLOW_ALL</constant> qui autorise les trois types précédents. Pour
- vérifier uniquement les adresses IP, vous pouvez utiliser l'exemple suivant :
- <programlisting language="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 <constant>ALLOW_ALL</constant> 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>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>
- Jusqu'à maintenant plus de 50 ccTLDs supportent les domaines IDN.
- </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(
- array(
- 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
- 'idn' => false
- )
- );
- ]]></programlisting> Alternativement vous pouvez passer soit <constant>TRUE</constant> soit
- <constant>FALSE</constant> à <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>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 language="php"><![CDATA[
- $validator =
- new Zend_Validate_Hostname(
- array(
- 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
- 'idn' => true,
- 'tld' => false
- )
- );
- ]]></programlisting> Alternativement vous pouvez passer soit <constant>TRUE</constant> soit
- <constant>FALSE</constant> à <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>
|