Zend_Validate-Hostname.xml 6.9 KB

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