Zend_Validate-Hostname.xml 7.0 KB

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