Zend_Validate-Hostname.xml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.hostname">
  5. <title>Hostname (Nombre de Host)</title>
  6. <para>
  7. <classname>Zend_Validate_Hostname</classname> le permite validar un nombre de host
  8. contra una serie de especificaciones conocidas.
  9. Es posible comprobar por tres diferentes tipos de nombres:
  10. el DNS Hostname (domain.com por ejemplo), dirección IP (es decir 1.2.3.4),
  11. y nombres de host locales (localhost, por ejemplo).
  12. Por defecto sólo se comprobarán nombres de host DNS.
  13. </para>
  14. <para>
  15. <emphasis>Uso básico</emphasis>
  16. </para>
  17. <para>
  18. El siguiente es un ejemplo de uso basico:
  19. <programlisting role="php"><![CDATA[
  20. $validator = new Zend_Validate_Hostname();
  21. if ($validator->isValid($hostname)) {
  22. // hostname parece ser válido
  23. } else {
  24. // hostname es inválido; muestre las razones
  25. foreach ($validator->getMessages() as $message) {
  26. echo "$message\n";
  27. }
  28. }
  29. ]]></programlisting>
  30. Comprobará el nombre de host <code>$hostname</code> y si fracasa
  31. alimentará a <code>$validator->getMessages()</code> con mensajes de error.
  32. </para>
  33. <para>
  34. <emphasis>Validar diferentes tipos de nombres de host</emphasis>
  35. </para>
  36. <para>
  37. También se puede encontrar coincidencias de direcciones IP,
  38. nombres de host locales, o una combinación de todos los tipos permitidos.
  39. Esto puede hacerse pasando un parámetro a <classname>Zend_Validate_Hostname</classname>
  40. cuando lo instancia.
  41. El parámetro debe ser un entero que determina qué tipos de nombres de
  42. host están permitidos.
  43. Se recomienda el uso de las constantes de <classname>Zend_Validate_Hostname</classname>
  44. para hacerlo.
  45. </para>
  46. <para>
  47. Las constantes de <classname>Zend_Validate_Hostname</classname> son:
  48. <code>ALLOW_DNS</code> para permitir sólo nombres de host DNS,
  49. <code>ALLOW_IP</code> para permitir direcciones IP,
  50. <code>ALLOW_LOCAL</code> para permitir nombres de host de la red local, y
  51. <code>ALLOW_ALL</code> para permitir todos estos tres tipos.
  52. Para comprobar que direcciones IP puede utilizar, vea el siguiente ejemplo:
  53. <programlisting role="php"><![CDATA[
  54. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
  55. if ($validator->isValid($hostname)) {
  56. // hostname parece ser válido
  57. } else {
  58. // hostname es inválido; muestre las razones
  59. foreach ($validator->getMessages() as $message) {
  60. echo "$message\n";
  61. }
  62. }
  63. ]]></programlisting>
  64. </para>
  65. <para>
  66. Usando <code>ALLOW_ALL</code> para aceptar todos los tipos de nombres de
  67. host, también puede combinar estos tipos para realizar combinaciones.
  68. Por ejemplo, para aceptar nombres de host DNS y locales, instancie el
  69. objeto <classname>Zend_Validate_Hostname</classname> como:
  70. <programlisting role="php"><![CDATA[
  71. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
  72. Zend_Validate_Hostname::ALLOW_IP);
  73. ]]></programlisting>
  74. </para>
  75. <para>
  76. <emphasis>Validación de Nombres de Dominio Internacionales</emphasis>
  77. </para>
  78. <para>
  79. Algunos (ccTLD), es decir países "Country Code Top Level Domains" , como 'de' (Alemania),
  80. aceptan caracteres internacionales como nombres de dominio.
  81. Estos son conocidos como Nombres de Dominio Internacionales
  82. (IDN, por sus siglas en inglés).
  83. Se puede buscar una coincidencia de estos dominios con Zend_Validate_Hostname,
  84. a través de caracteres extendidos que se utilizan en el proceso de validación.
  85. </para>
  86. <para>
  87. En la actualidad la lista de las ccTLDs incluyen a:
  88. <itemizedlist>
  89. <listitem>
  90. <para>at (Austria)</para>
  91. </listitem>
  92. <listitem>
  93. <para>ch (Suiza)</para>
  94. </listitem>
  95. <listitem>
  96. <para>li (Liechtenstein)</para>
  97. </listitem>
  98. <listitem>
  99. <para>de (Alemania)</para>
  100. </listitem>
  101. <listitem>
  102. <para>fi (Finlandia)</para>
  103. </listitem>
  104. <listitem>
  105. <para>hu (Hungría)</para>
  106. </listitem>
  107. <listitem>
  108. <para>no (Noruega)</para>
  109. </listitem>
  110. <listitem>
  111. <para>se (Suecia)</para>
  112. </listitem>
  113. </itemizedlist>
  114. </para>
  115. <para>
  116. Cotejar dominios IDN es tan simple como usar el validador estándar
  117. Hostname, ya que este viene habilitado por defecto.
  118. Si desea desactivar la validación IDN, se puede hacer ya sea pasando un
  119. parámetro al constructor Zend_Validate_Hostname o a través del método
  120. <code>$validator->setValidateIdn()</code>.
  121. </para>
  122. <para>
  123. Puede deshabilitar la validación IDN, pasando un segundo parámetro al
  124. constructor Zend_Validate_Hostname de la siguiente manera.
  125. <programlisting role="php"><![CDATA[
  126. $validator =
  127. new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, false);
  128. ]]></programlisting>
  129. Alternativamente puede pasar TRUE o FALSE a <code>$validator->setValidateIdn()</code>
  130. para activar o desactivar la validación IDN.
  131. Si está tratando de cotejar un nombre de host IDN que actualmente no
  132. está soportado, es probable que falle la validación si tiene caracteres
  133. internacionales en el nombre de host.
  134. Cuando un archivo ccTLD no existe en Zend/Validate/Hostname, especificando
  135. los caracteres adicionales se puede realizar una validación normal.
  136. </para>
  137. <para>
  138. Tenga en cuenta que una validación IDN solo se realizará si tiene habilidada
  139. la validación para nombres de host DNS.
  140. </para>
  141. <para>
  142. <emphasis>Validar dominios de nivel superior</emphasis>
  143. </para>
  144. <para>
  145. Por defecto un nombre de host se cotejará con una lista de TLDs conocidos.
  146. Si esta funcionalidad no es necesaria, puede ser desactivada en la misma
  147. forma que deshabilita el soporte IDN.
  148. Puede deshabilitar la validación TLD pasando un tercer parámetro al
  149. constructor Zend_Validate_Hostname.
  150. En el siguiente ejemplo estamos dando respaldo a la validación IDN a través
  151. del segundo parámetro.
  152. <programlisting role="php"><![CDATA[
  153. $validator =
  154. new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
  155. true,
  156. false);
  157. ]]></programlisting>
  158. Alternativamente puede pasar TRUE o FALSE a <code>$validator->setValidateTld()</code>
  159. para activar o desactivar la validación TLD.
  160. </para>
  161. <para>
  162. Tenga en cuenta que una validación de TLDs solo se realizará si tiene habilidada
  163. la validación para nombres de host DNS.
  164. </para>
  165. </sect2>
  166. <!--
  167. vim:se ts=4 sw=4 et:
  168. -->