| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.validate.set.email_address">
- <title>Dirección de Email</title>
- <para>
- <classname>Zend_Validate_EmailAddress</classname> Le permite validar una dirección
- de email. El validador primero divide la dirección de email en la parte
- local @ nombre de host e intenta igualar a estos contra especificaciones
- conocidas para direcciones y nombres de host para el correo electrónico.
- </para>
- <para>
- <emphasis>Utilización básica</emphasis>
- </para>
- <para>
- Un ejemplo básico de uso se ve a continuación:
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_EmailAddress();
- if ($validator->isValid($email)) {
- // El email parece ser válido
- } else {
- // El email es inválido; muestre las razones
- foreach ($validator->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting>
- Esto coincide con el correo electrónico <methodname>$email</methodname> y si fracasa,
- alimenta <methodname>$validator->getMessages()</methodname> con mensajes de error útiles.
- </para>
- <para>
- <emphasis>Partes locales complejas</emphasis>
- </para>
- <para>
- <classname>Zend_Validate_EmailAddress</classname> se comparará con cualquier
- dirección de correo válida de acuardo a RFC2822.
- Por ejemplo, correos electrónicos válidos incluyen <methodname>bob@domain.com</methodname> ,
- <methodname>bob+jones@domain.us</methodname> , <methodname>"bob@jones"@domain.com</methodname> y
- <methodname>"bob jones"@domain.com</methodname>
- </para>
- <para>
- Algunos formatos obsoletos de email actualmente no validan
- (por ejemplo los retornos de carro o "\" un caracter en una dirección
- de correo electrónico).
- </para>
- <para>
- <emphasis>Validar diferentes tipos de nombres de host</emphasis>
- </para>
- <para>
- La parte nombre de host de una dirección de correo es validado contra
- <link linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>.
- Por defecto sólo son aceptados nombres de host DNS de la forma
- <methodname>domain.com</methodname>, aunque si lo desea también puede aceptar
- direcciones IP y nombres de host locales.
- </para>
- <para>
- Para ello necesita instanciar a <classname>Zend_Validate_EmailAddress</classname>
- pasando un parámetro para indicar el tipo de nombres de host que quiere aceptar.
- Más detalles están incluidos en <classname>Zend_Validate_EmailAddress</classname>,
- aunque abajo hay un ejemplo de cómo aceptar tanto nombres de host DNS y
- locales:
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_EmailAddress(
- Zend_Validate_Hostname::ALLOW_DNS |
- Zend_Validate_Hostname::ALLOW_LOCAL);
- if ($validator->isValid($email)) {
- // email parece ser válido
- } else {
- // email es inválido; muestre las razones
- foreach ($validator->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting>
- </para>
- <para>
- <emphasis>Verificar si el nombre de host realmente acepta email</emphasis>
- </para>
- <para>
- Sólo porque una dirección de correo electrónico está en el formato correcto,
- no necesariamente significa que esa dirección de correo electrónico
- existe realmente. Para ayudar a resolver este problema, puede usar la
- validación MX para comprobar si existe una entrada MX (email) en el
- registro DNS para correo electrónico en ese nombre de host.
- Esto le dice que el nombre de host acepta email, pero no le dice si la
- dirección de correo electrónico exacta es válida en si misma.
- </para>
- <para>
- La comprobación MX no está activada por defecto y en este momento es
- soportada sólo por plataformas UNIX.
- Para habilitar el control MX puede pasar un segundo parámetro al
- constructor <classname>Zend_Validate_EmailAddress</classname>.
- <programlisting language="php"><![CDATA[
- $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
- true);
- ]]></programlisting>
- Alternativamente, para activar o desactivar la validación MX puede pasar
- <methodname>true</methodname> o <methodname>false</methodname> a <methodname>$validator->setValidateMx()</methodname>.
- </para>
- <para>
- Al habilitarlo, se usarán las funciones de red para comprobar
- la presencia de un registro MX en el nombre de host de la dirección
- de correo electrónico que desea validar.
- Tenga en cuenta esto probablemente hará más lento su script.
- </para>
- <para>
- <emphasis>Validating International Domains Names</emphasis>
- </para>
- <para>
- <classname>Zend_Validate_EmailAddress</classname> también comparará caracteres
- internationales que existen en algunos dominios.
- Esto se conoce como soporte de International Domain Name (IDN).
- Está activado por defecto, aunque puede deshabilitarlo internamente
- cambiando el ajuste a través del objeto <classname>Zend_Validate_Hostname</classname>
- que existe en <classname>Zend_Validate_EmailAddress</classname>.
- <programlisting language="php"><![CDATA[
- $validator->hostnameValidator->setValidateIdn(false);
- ]]></programlisting>
- Sobre el uso de <methodname>setValidateIdn()</methodname> encontrará más información
- en la documentación de <classname>Zend_Validate_Hostname</classname>.
- </para>
- <para>
- Tenga en cuenta que los IDNs se validarán solo si
- usted permite que nombres de host DNS sean validados.
- </para>
- <para>
- <emphasis>Validar Dominios de Nivel Superior (TLD)</emphasis>
- </para>
- <para>
- Por defecto, un nombre de host se cotejará con una lista conocida de TLDs.
- Está activado por defecto, aunque puede deshabilitarlo cambiando el
- ajuste a través del objeto interno <classname>Zend_Validate_Hostname</classname>
- que existe en <classname>Zend_Validate_EmailAddress</classname>.
- <programlisting language="php"><![CDATA[
- $validator->hostnameValidator->setValidateTld(false);
- ]]></programlisting>
- Encontrará más información sobre el uso de <methodname>setValidateTld()</methodname>
- en la documentación de <classname>Zend_Validate_Hostname</classname>.
- </para>
- <para>
- Tenga en cuenta que los TLDs se validarán solo si
- usted permite que nombres de host DNS sean validados.
- </para>
- </sect2>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|