Zend_Validate-Hostname.xml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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
  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 basico: <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
  27. <methodname>$hostname</methodname> y si fracasa alimentará a
  28. <methodname>$validator->getMessages()</methodname> con mensajes de
  29. error. </para>
  30. <para>
  31. <emphasis>Validar diferentes tipos de nombres de host</emphasis>
  32. </para>
  33. <para> También se puede encontrar coincidencias de direcciones IP, nombres
  34. de host locales, o una combinación de todos los tipos permitidos. Esto
  35. puede hacerse pasando un parámetro a
  36. <classname>Zend_Validate_Hostname</classname> cuando lo instancia.
  37. El parámetro debe ser un entero que determina qué tipos de nombres de
  38. host están permitidos. Se recomienda el uso de las constantes de
  39. <classname>Zend_Validate_Hostname</classname> para hacerlo. </para>
  40. <para> Las constantes de <classname>Zend_Validate_Hostname</classname> son:
  41. <methodname>ALLOW_DNS</methodname> para permitir sólo nombres de
  42. host DNS, <methodname>ALLOW_IP</methodname> para permitir direcciones
  43. IP, <methodname>ALLOW_LOCAL</methodname> para permitir nombres de host
  44. de la red local, y <methodname>ALLOW_ALL</methodname> para permitir
  45. todos estos tres tipos. Para comprobar que direcciones IP puede
  46. utilizar, vea el siguiente ejemplo: <programlisting language="php"><![CDATA[
  47. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
  48. if ($validator->isValid($hostname)) {
  49. // hostname parece ser válido
  50. } else {
  51. // hostname es inválido; muestre las razones
  52. foreach ($validator->getMessages() as $message) {
  53. echo "$message\n";
  54. }
  55. }
  56. ]]></programlisting>
  57. </para>
  58. <para> Usando <methodname>ALLOW_ALL</methodname> para aceptar todos los
  59. tipos de nombres de host, también puede combinar estos tipos para
  60. realizar combinaciones. Por ejemplo, para aceptar nombres de host DNS y
  61. locales, instancie el objeto
  62. <classname>Zend_Validate_Hostname</classname> como: <programlisting language="php"><![CDATA[
  63. $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
  64. Zend_Validate_Hostname::ALLOW_IP);
  65. ]]></programlisting>
  66. </para>
  67. <para>
  68. <emphasis>Validación de Nombres de Dominio Internacionales</emphasis>
  69. </para>
  70. <para> Algunos (ccTLD), es decir países "Country Code Top Level Domains" ,
  71. como 'de' (Alemania), aceptan caracteres internacionales como nombres de
  72. dominio. Estos son conocidos como Nombres de Dominio Internacionales
  73. (IDN, por sus siglas en inglés). Se puede buscar una coincidencia de
  74. estos dominios con Zend_Validate_Hostname, a través de caracteres
  75. extendidos que se utilizan en el proceso de validación. </para>
  76. <para> En la actualidad la lista de las ccTLDs incluyen a: <itemizedlist>
  77. <listitem>
  78. <para>at (Austria)</para>
  79. </listitem>
  80. <listitem>
  81. <para>ch (Suiza)</para>
  82. </listitem>
  83. <listitem>
  84. <para>li (Liechtenstein)</para>
  85. </listitem>
  86. <listitem>
  87. <para>de (Alemania)</para>
  88. </listitem>
  89. <listitem>
  90. <para>fi (Finlandia)</para>
  91. </listitem>
  92. <listitem>
  93. <para>hu (Hungría)</para>
  94. </listitem>
  95. <listitem>
  96. <para>no (Noruega)</para>
  97. </listitem>
  98. <listitem>
  99. <para>se (Suecia)</para>
  100. </listitem>
  101. </itemizedlist>
  102. </para>
  103. <para> Cotejar dominios IDN es tan simple como usar el validador estándar
  104. Hostname, ya que este viene habilitado por defecto. Si desea desactivar
  105. la validación IDN, se puede hacer ya sea pasando un parámetro al
  106. constructor Zend_Validate_Hostname o a través del método
  107. <methodname>$validator->setValidateIdn()</methodname>. </para>
  108. <para> Puede deshabilitar la validación IDN, pasando un segundo parámetro al
  109. constructor Zend_Validate_Hostname de la siguiente manera. <programlisting language="php"><![CDATA[
  110. $validator =
  111. new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, false);
  112. ]]></programlisting> Alternativamente puede pasar <constant>TRUE</constant> o
  113. <constant>FALSE</constant> a
  114. <methodname>$validator->setValidateIdn()</methodname> para activar o
  115. desactivar la validación IDN. Si está tratando de cotejar un nombre de
  116. host IDN que actualmente no está soportado, es probable que falle la
  117. validación si tiene caracteres internacionales en el nombre de host.
  118. Cuando un archivo ccTLD no existe en Zend/Validate/Hostname,
  119. especificando los caracteres adicionales se puede realizar una
  120. validación normal. </para>
  121. <para> Tenga en cuenta que una validación IDN solo se realizará si tiene
  122. habilidada la validación para nombres de host DNS. </para>
  123. <para>
  124. <emphasis>Validar dominios de nivel superior</emphasis>
  125. </para>
  126. <para> Por defecto un nombre de host se cotejará con una lista de TLDs
  127. conocidos. Si esta funcionalidad no es necesaria, puede ser desactivada
  128. en la misma forma que deshabilita el soporte IDN. Puede deshabilitar la
  129. validación TLD pasando un tercer parámetro al constructor
  130. Zend_Validate_Hostname. En el siguiente ejemplo estamos dando respaldo a
  131. la validación IDN a través del segundo parámetro. <programlisting language="php"><![CDATA[
  132. $validator =
  133. new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
  134. true,
  135. false);
  136. ]]></programlisting> Alternativamente puede pasar <constant>TRUE</constant> o
  137. <constant>FALSE</constant> a
  138. <methodname>$validator->setValidateTld()</methodname> para activar o
  139. desactivar la validación TLD. </para>
  140. <para> Tenga en cuenta que una validación de TLDs solo se realizará si tiene
  141. habilidada la validación para nombres de host DNS. </para>
  142. </sect2>