Zend_Validate-Hostname.xml 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15346 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.hostname">
  5. <title>Hostname</title>
  6. <para>
  7. <classname>Zend_Validate_Hostname</classname> vous permet de valider un nom de domaine
  8. sur la base d'un ensemble de spécifications connues. Il est ainsi possible de valider trois
  9. types différents de noms de domaine : un nom de domaine qualifié (ex : domaine.com), une
  10. adresse IP (ex : 1.2.3.4) ou un nom de domaine local (ex : localhost). Par défaut, seul les
  11. noms de domaine qualifiés sont acceptés.
  12. </para>
  13. <para><emphasis>Utilisation basique</emphasis></para>
  14. <para>
  15. Exemple simple : <programlisting language="php"><![CDATA[
  16. $validateur = new Zend_Validate_Hostname();
  17. if ($validateur->isValid($domaine)) {
  18. // le nom de domaine est valide
  19. } else {
  20. // le nom de domaine est invalide ; afficher pourquoi
  21. foreach ($validateur->getMessages() as $message) {
  22. echo "$message\n";
  23. }
  24. }
  25. ]]></programlisting> Ceci validera le domaine <code>$domaine</code> et, en cas d'échec, fournira
  26. des messages d'erreur informatifs via <code>$validator-&gt;getMessages()</code>.
  27. </para>
  28. <para><emphasis>Validation de différents types de noms de domaine</emphasis></para>
  29. <para>
  30. Il peut se trouver que vous souhaitez valider des adresses IP, des noms de domaine
  31. locaux ou toute combinaison de tous les types disponibles. Cette opération peut être
  32. effectuée en passant un paramètre à <classname>Zend_Validate_Hostname</classname> au moment
  33. de l'instanciation. Le paramètre doit être un entier qui détermine quels types de noms de
  34. domaine sont admis. Il est recommandé d'utiliser les constantes de la classe
  35. <classname>Zend_Validate_Hostname</classname>.
  36. </para>
  37. <para>
  38. Les constantes de <classname>Zend_Validate_Hostname</classname> sont :
  39. <code>ALLOW_DNS</code> qui autorise uniquement les noms de domaine qualifiés,
  40. <code>ALLOW_IP</code> qui autorise les adresses IP, <code>ALLOW_LOCAL</code> qui autorise
  41. les domaines locaux et <code>ALLOW_ALL</code> qui autorise les trois types précédents. Pour
  42. vérifier uniquement les adresses IP, vous pouvez utiliser l'exemple suivant :
  43. <programlisting language="php"><![CDATA[
  44. $validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
  45. if ($validateur->isValid($hostname)) {
  46. // le nom de domaine est valide
  47. } else {
  48. // le nom de domaine est invalide ; afficher pourquoi
  49. foreach ($validateur->getMessages() as $message) {
  50. echo "$message\n";
  51. }
  52. }
  53. ]]></programlisting></para>
  54. <para>
  55. Vous pouvez utiliser <code>ALLOW_ALL</code> pour accepter tous les types de domaines.
  56. De même, vous pouvez créer des configurations combinant ces différents types. Par exemple,
  57. pour accepter les domaines qualifiés et les domaines locaux, instanciez votre objet
  58. <classname>Zend_Validate_Hostname</classname> de la manière suivante : <programlisting
  59. role="php"><![CDATA[
  60. $validateur = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
  61. Zend_Validate_Hostname::ALLOW_IP);
  62. ]]></programlisting></para>
  63. <para><emphasis>Validation de Nom de Domaine International (IDN)</emphasis></para>
  64. <para>
  65. Certains noms de domaines nationaux (Country Code Top Level Domains ou ccTLD), comme
  66. .de (Allemagne), supporte les caractères internationaux dans leurs noms de domaine. Ceci est
  67. connu sous le nom de Nom de Domaine International (IDN). Ces domaines peuvent être vérifiés
  68. par <classname>Zend_Validate_Hostname</classname> grâce aux caractères étendus qui sont
  69. utilisés dans le processus de validation.
  70. </para>
  71. <para>
  72. Pour l'instant, la liste des ccTLD supportés inclus : <itemizedlist>
  73. <listitem>
  74. <para>at (Autriche)</para>
  75. </listitem>
  76. <listitem>
  77. <para>ch (Suisse)</para>
  78. </listitem>
  79. <listitem>
  80. <para>li (Liechtenstein)</para>
  81. </listitem>
  82. <listitem>
  83. <para>de (Allemagne)</para>
  84. </listitem>
  85. <listitem>
  86. <para>fi (Finlande)</para>
  87. </listitem>
  88. <listitem>
  89. <para>hu (Hongrie)</para>
  90. </listitem>
  91. <listitem>
  92. <para>no (Norvège)</para>
  93. </listitem>
  94. <listitem>
  95. <para>se (Suède)</para>
  96. </listitem>
  97. </itemizedlist>
  98. </para>
  99. <para>
  100. Pour vérifier un domaine IDN c'est aussi simple que d'utiliser le validateur standard
  101. de nom de domaine puisque la validation IDN est activé par défaut. Si vous voulez mettre
  102. hors service la validation IDN, cela peut être fait par le passage d'un paramètre au
  103. constructeur <classname>Zend_Validate_Hostname</classname> ou via la méthode
  104. <code>$validator-&gt;setValidateIdn()</code>.
  105. </para>
  106. <para>
  107. Vous pouvez aussi désactiver la validation IDN en passant un second paramètre au
  108. constructeur du <classname>Zend_Validate_Hostname</classname> comme ceci : <programlisting
  109. role="php"><![CDATA[
  110. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
  111. false);
  112. ]]></programlisting> Alternativement vous pouvez passer soit <code>true</code> soit
  113. <code>false</code> à <code>$validator-&gt;setValidateIdn()</code> pour activer ou désactiver
  114. la validation IDN. Si vous essayez de vérifier un nom de domaine IDN qui n'est pas
  115. actuellement soutenu il est probable qu'il retournera une erreur s'il y a des caractères
  116. internationaux. Quand un fichier de ccTLD spécifiant les caractères supplémentaires n'existe
  117. pas dans "Zend/Validate/Hostname",une validation de nom de domaine normale est
  118. réalisée.
  119. </para>
  120. <para>
  121. Notez cependant que les IDNs sont seulement validés si vous autorisez la validation
  122. des noms de domaine.
  123. </para>
  124. <para><emphasis>Validation des "Top Level Domains"</emphasis></para>
  125. <para>
  126. Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Si cette
  127. fonctionnalité n'est pas nécessaire, elle peut être désactivée de la même façon que la
  128. désactivation du support des IDNs. Vous pouvez désactiver la validation TLD en passant un
  129. troisième paramètre au constructeur de <classname>Zend_Validate_Hostname</classname>. Dans
  130. l'exemple ci-dessous, la validation IDN est supportée via le second paramètre.
  131. <programlisting language="php"><![CDATA[
  132. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
  133. true,
  134. false);
  135. ]]></programlisting> Alternativement vous pouvez passer soit <code>true</code> soit
  136. <code>false</code> à <code>$validator-&gt;setValidateTld()</code> pour activer ou désactiver
  137. la validation TLD.
  138. </para>
  139. <para>
  140. Notez cependant que les TLDs sont seulement validés si vous autorisez la validation
  141. des noms de domaine.
  142. </para>
  143. </sect2>