| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 20115 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.validate.set.hostname">
- <title>Hostname (Nombre de Host)</title>
- <para>
- <classname>Zend_Validate_Hostname</classname> le permite validar un
- nombre de host contra una serie de especificaciones conocidas. Es
- posible comprobar por tres diferentes tipos de nombres: el DNS Hostname
- (domain.com por ejemplo), dirección IP (es decir 1.2.3.4), y nombres de
- host locales (localhost, por ejemplo). Por defecto sólo se comprobarán
- nombres de host DNS. </para>
- <para>
- <emphasis>Uso básico</emphasis>
- </para>
- <para> El siguiente es un ejemplo de uso básico: <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_Hostname();
- if ($validator->isValid($hostname)) {
- // hostname parece ser válido
- } else {
- // hostname es inválido; muestre las razones
- foreach ($validator->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting> Comprobará el nombre de host <varname>$hostname</varname> y
- si fracasa alimentará a <methodname>getMessages()</methodname> con
- mensajes de error. </para>
- <para>
- <emphasis>Validar diferentes tipos de nombres de host</emphasis>
- </para>
- <para> También se puede encontrar coincidencias de direcciones IP, nombres
- de host locales, o una combinación de todos los tipos permitidos. Esto
- puede hacerse pasando un parámetro a
- <classname>Zend_Validate_Hostname</classname> cuando lo instancia.
- El parámetro debe ser un entero que determina qué tipos de nombres de
- host están permitidos. Se recomienda el uso de las constantes de
- <classname>Zend_Validate_Hostname</classname> para hacerlo. </para>
- <para> Las constantes de <classname>Zend_Validate_Hostname</classname> son:
- <constant>ALLOW_DNS</constant> para permitir sólo nombres de host
- DNS, <constant>ALLOW_IP</constant> para permitir direcciones IP,
- <constant>ALLOW_LOCAL</constant> para permitir nombres de host de la
- red local, y <constant>ALLOW_ALL</constant> para permitir todos estos
- tres tipos. Para comprobar que direcciones IP puede utilizar, vea el
- siguiente ejemplo: <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP);
- if ($validator->isValid($hostname)) {
- // hostname parece ser válido
- } else {
- // hostname es inválido; muestre las razones
- foreach ($validator->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting>
- </para>
- <para> Usando <constant>ALLOW_ALL</constant> para aceptar todos los tipos de
- nombres de host, también puede combinar estos tipos para realizar
- combinaciones. Por ejemplo, para aceptar nombres de host DNS y locales,
- instancie el objeto <classname>Zend_Validate_Hostname</classname> como: <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS |
- Zend_Validate_Hostname::ALLOW_IP);
- ]]></programlisting>
- </para>
- <para>
- <emphasis>Validación de Nombres de Dominio Internacionales</emphasis>
- </para>
- <para> Algunos (ccTLD), es decir países "Country Code Top Level Domains" ,
- como 'de' (Alemania), aceptan caracteres internacionales como nombres de
- dominio. Estos son conocidos como Nombres de Dominio Internacionales
- (IDN, por sus siglas en inglés). Se puede buscar una coincidencia de
- estos dominios con <classname>Zend_Validate_Hostname</classname> , a
- través de caracteres extendidos que se utilizan en el proceso de
- validación. </para>
- <para> Until now more than 50 ccTLDs support IDN domains. </para>
- <para> Cotejar dominios IDN es tan simple como usar el validador estándar
- Hostname, ya que este viene habilitado por defecto. Si desea desactivar
- la validación IDN, se puede hacer ya sea pasando un parámetro al
- constructor <classname>Zend_Validate_Hostname</classname> o a través del
- método <methodname>setValidateIdn()</methodname> . </para>
- <para>Puede deshabilitar la validación IDN, pasando un segundo parámetro al
- constructor Zend_Validate_Hostname de la siguiente manera. </para>
- <programlisting language="php"><![CDATA[
- $validator =
- new Zend_Validate_Hostname(
- array(
- 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
- 'idn' => false
- )
- );
- ]]></programlisting>
- <para> Alternativamente puede pasar <constant>TRUE</constant> o
- <constant>FALSE</constant> a
- <methodname>setValidateIdn()</methodname> para activar o desactivar
- la validación IDN. Si está tratando de cotejar un nombre de host IDN que
- actualmente no está soportado, es probable que falle la validación si
- tiene caracteres internacionales en el nombre de host. Cuando un archivo
- ccTLD no existe en Zend/Validate/Hostname, especificando los caracteres
- adicionales se puede realizar una validación normal. </para>
- <para>Tenga en cuenta que una validación IDN solo se realizará si tiene
- habilidada la validación para nombres de host DNS.</para>
- <para>
- <emphasis>Validacuión de dominios de nivel superior</emphasis>
- </para>
- <para>Por defecto un nombre de host se cotejará con una lista de TLDs
- conocidos. Si esta funcionalidad no es necesaria, puede ser desactivada
- en la misma forma que deshabilita el soporte IDN. Puede deshabilitar la
- validación TLD pasando un tercer parámetro al constructor
- Zend_Validate_Hostname. En el siguiente ejemplo estamos dando respaldo a
- la validación IDN a través del segundo parámetro. </para>
- <programlisting language="php"><![CDATA[
- $validator =
- new Zend_Validate_Hostname(
- array(
- 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
- 'idn' => true,
- 'tld' => false
- )
- );
- ]]></programlisting>
- <para> Alternativamente puede pasar <constant>TRUE</constant> o
- <constant>FALSE</constant> a
- <methodname>setValidateTld()</methodname> para activar o desactivar
- la validación TLD. </para>
- <para>Tenga en cuenta que una validación de TLDs solo se realizará si tiene
- habilidada la validación para nombres de host DNS.</para>
- </sect2>
|