| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 19568 -->
- <!-- 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>
|