| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- 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 basico: <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
- <methodname>$hostname</methodname> y si fracasa alimentará a
- <methodname>$validator->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:
- <methodname>ALLOW_DNS</methodname> para permitir sólo nombres de
- host DNS, <methodname>ALLOW_IP</methodname> para permitir direcciones
- IP, <methodname>ALLOW_LOCAL</methodname> para permitir nombres de host
- de la red local, y <methodname>ALLOW_ALL</methodname> 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 <methodname>ALLOW_ALL</methodname> 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 Zend_Validate_Hostname, a través de caracteres
- extendidos que se utilizan en el proceso de validación. </para>
- <para> En la actualidad la lista de las ccTLDs incluyen a: <itemizedlist>
- <listitem>
- <para>at (Austria)</para>
- </listitem>
- <listitem>
- <para>ch (Suiza)</para>
- </listitem>
- <listitem>
- <para>li (Liechtenstein)</para>
- </listitem>
- <listitem>
- <para>de (Alemania)</para>
- </listitem>
- <listitem>
- <para>fi (Finlandia)</para>
- </listitem>
- <listitem>
- <para>hu (Hungría)</para>
- </listitem>
- <listitem>
- <para>no (Noruega)</para>
- </listitem>
- <listitem>
- <para>se (Suecia)</para>
- </listitem>
- </itemizedlist>
- </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 Zend_Validate_Hostname o a través del método
- <methodname>$validator->setValidateIdn()</methodname>. </para>
- <para> Puede deshabilitar la validación IDN, pasando un segundo parámetro al
- constructor Zend_Validate_Hostname de la siguiente manera. <programlisting language="php"><![CDATA[
- $validator =
- new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, false);
- ]]></programlisting> Alternativamente puede pasar <constant>TRUE</constant> o
- <constant>FALSE</constant> a
- <methodname>$validator->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>Validar 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. <programlisting language="php"><![CDATA[
- $validator =
- new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS,
- true,
- false);
- ]]></programlisting> Alternativamente puede pasar <constant>TRUE</constant> o
- <constant>FALSE</constant> a
- <methodname>$validator->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>
|