Zend_Validate-Hostname.xml 6.5 KB

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