Zend_Validate-EmailAddress.xml 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.email_address">
  5. <title>Dirección de Email</title>
  6. <para>
  7. <classname>Zend_Validate_EmailAddress</classname> Le permite validar una dirección
  8. de email. El validador primero divide la dirección de email en la parte
  9. local @ nombre de host e intenta igualar a estos contra especificaciones
  10. conocidas para direcciones y nombres de host para el correo electrónico.
  11. </para>
  12. <para>
  13. <emphasis>Utilización básica</emphasis>
  14. </para>
  15. <para>
  16. Un ejemplo básico de uso se ve a continuación:
  17. <programlisting language="php"><![CDATA[
  18. $validator = new Zend_Validate_EmailAddress();
  19. if ($validator->isValid($email)) {
  20. // El email parece ser válido
  21. } else {
  22. // El email es inválido; muestre las razones
  23. foreach ($validator->getMessages() as $message) {
  24. echo "$message\n";
  25. }
  26. }
  27. ]]></programlisting>
  28. Esto coincide con el correo electrónico <methodname>$email</methodname> y si fracasa,
  29. alimenta <methodname>$validator->getMessages()</methodname> con mensajes de error útiles.
  30. </para>
  31. <para>
  32. <emphasis>Partes locales complejas</emphasis>
  33. </para>
  34. <para>
  35. <classname>Zend_Validate_EmailAddress</classname> se comparará con cualquier
  36. dirección de correo válida de acuardo a RFC2822.
  37. Por ejemplo, correos electrónicos válidos incluyen <methodname>bob@domain.com</methodname> ,
  38. <methodname>bob+jones@domain.us</methodname> , <methodname>"bob@jones"@domain.com</methodname> y
  39. <methodname>"bob jones"@domain.com</methodname>
  40. </para>
  41. <para>
  42. Algunos formatos obsoletos de email actualmente no validan
  43. (por ejemplo los retornos de carro o "\" un caracter en una dirección
  44. de correo electrónico).
  45. </para>
  46. <para>
  47. <emphasis>Validar diferentes tipos de nombres de host</emphasis>
  48. </para>
  49. <para>
  50. La parte nombre de host de una dirección de correo es validado contra
  51. <link linkend="zend.validate.set.hostname"><classname>Zend_Validate_Hostname</classname></link>.
  52. Por defecto sólo son aceptados nombres de host DNS de la forma
  53. <methodname>domain.com</methodname>, aunque si lo desea también puede aceptar
  54. direcciones IP y nombres de host locales.
  55. </para>
  56. <para>
  57. Para ello necesita instanciar a <classname>Zend_Validate_EmailAddress</classname>
  58. pasando un parámetro para indicar el tipo de nombres de host que quiere aceptar.
  59. Más detalles están incluidos en <classname>Zend_Validate_EmailAddress</classname>,
  60. aunque abajo hay un ejemplo de cómo aceptar tanto nombres de host DNS y
  61. locales:
  62. <programlisting language="php"><![CDATA[
  63. $validator = new Zend_Validate_EmailAddress(
  64. Zend_Validate_Hostname::ALLOW_DNS |
  65. Zend_Validate_Hostname::ALLOW_LOCAL);
  66. if ($validator->isValid($email)) {
  67. // email parece ser válido
  68. } else {
  69. // email es inválido; muestre las razones
  70. foreach ($validator->getMessages() as $message) {
  71. echo "$message\n";
  72. }
  73. }
  74. ]]></programlisting>
  75. </para>
  76. <para>
  77. <emphasis>Verificar si el nombre de host realmente acepta email</emphasis>
  78. </para>
  79. <para>
  80. Sólo porque una dirección de correo electrónico está en el formato correcto,
  81. no necesariamente significa que esa dirección de correo electrónico
  82. existe realmente. Para ayudar a resolver este problema, puede usar la
  83. validación MX para comprobar si existe una entrada MX (email) en el
  84. registro DNS para correo electrónico en ese nombre de host.
  85. Esto le dice que el nombre de host acepta email, pero no le dice si la
  86. dirección de correo electrónico exacta es válida en si misma.
  87. </para>
  88. <para>
  89. La comprobación MX no está activada por defecto y en este momento es
  90. soportada sólo por plataformas UNIX.
  91. Para habilitar el control MX puede pasar un segundo parámetro al
  92. constructor <classname>Zend_Validate_EmailAddress</classname>.
  93. <programlisting language="php"><![CDATA[
  94. $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS,
  95. true);
  96. ]]></programlisting>
  97. Alternativamente, para activar o desactivar la validación MX puede pasar
  98. <methodname>true</methodname> o <methodname>false</methodname> a <methodname>$validator->setValidateMx()</methodname>.
  99. </para>
  100. <para>
  101. Al habilitarlo, se usarán las funciones de red para comprobar
  102. la presencia de un registro MX en el nombre de host de la dirección
  103. de correo electrónico que desea validar.
  104. Tenga en cuenta esto probablemente hará más lento su script.
  105. </para>
  106. <para>
  107. <emphasis>Validating International Domains Names</emphasis>
  108. </para>
  109. <para>
  110. <classname>Zend_Validate_EmailAddress</classname> también comparará caracteres
  111. internationales que existen en algunos dominios.
  112. Esto se conoce como soporte de International Domain Name (IDN).
  113. Está activado por defecto, aunque puede deshabilitarlo internamente
  114. cambiando el ajuste a través del objeto <classname>Zend_Validate_Hostname</classname>
  115. que existe en <classname>Zend_Validate_EmailAddress</classname>.
  116. <programlisting language="php"><![CDATA[
  117. $validator->hostnameValidator->setValidateIdn(false);
  118. ]]></programlisting>
  119. Sobre el uso de <methodname>setValidateIdn()</methodname> encontrará más información
  120. en la documentación de <classname>Zend_Validate_Hostname</classname>.
  121. </para>
  122. <para>
  123. Tenga en cuenta que los IDNs se validarán solo si
  124. usted permite que nombres de host DNS sean validados.
  125. </para>
  126. <para>
  127. <emphasis>Validar Dominios de Nivel Superior (TLD)</emphasis>
  128. </para>
  129. <para>
  130. Por defecto, un nombre de host se cotejará con una lista conocida de TLDs.
  131. Está activado por defecto, aunque puede deshabilitarlo cambiando el
  132. ajuste a través del objeto interno <classname>Zend_Validate_Hostname</classname>
  133. que existe en <classname>Zend_Validate_EmailAddress</classname>.
  134. <programlisting language="php"><![CDATA[
  135. $validator->hostnameValidator->setValidateTld(false);
  136. ]]></programlisting>
  137. Encontrará más información sobre el uso de <methodname>setValidateTld()</methodname>
  138. en la documentación de <classname>Zend_Validate_Hostname</classname>.
  139. </para>
  140. <para>
  141. Tenga en cuenta que los TLDs se validarán solo si
  142. usted permite que nombres de host DNS sean validados.
  143. </para>
  144. </sect2>
  145. <!--
  146. vim:se ts=4 sw=4 et:
  147. -->