Zend_Validate-EmailAddress.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 19419 -->
  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>
  8. Le permite validar una dirección
  9. de email. El validador primero divide la dirección de email
  10. en la parte
  11. local @ nombre de host e intenta igualar a estos contra especificaciones
  12. conocidas para direcciones y nombres de host para el correo electrónico.
  13. </para>
  14. <sect3 id="zend.validate.set.email_address.basic">
  15. <title>Utilización básica</title>
  16. <para>
  17. Un ejemplo básico de uso se ve a continuación:
  18. </para>
  19. <programlisting language="php"><![CDATA[
  20. $validator = new Zend_Validate_EmailAddress();
  21. if ($validator->isValid($email)) {
  22. // El email parece ser válido
  23. } else {
  24. // El email es inválido; muestre las razones
  25. foreach ($validator->getMessages() as $message) {
  26. echo "$message\n";
  27. }
  28. }
  29. ]]></programlisting>
  30. <para>
  31. Esto coincide con el correo electrónico
  32. <varname>$email</varname>
  33. y si fracasa,
  34. alimenta
  35. <code>$validator->getMessages()</code>
  36. con mensajes de error útiles.
  37. </para>
  38. </sect3>
  39. <sect3 id="zend.validate.set.email_address.options">
  40. <title>>Partes locales complejas</title>
  41. <para>
  42. <classname>Zend_Validate_EmailAddress</classname>
  43. supports several options which can
  44. either be set at initiation, by giving an array with
  45. the related options, or
  46. afterwards, by using
  47. <methodname>setOptions()</methodname>
  48. . The following options are
  49. supported:
  50. </para>
  51. <itemizedlist>
  52. <listitem>
  53. <para>
  54. <emphasis>allow</emphasis>
  55. : Defines which type of domain names are accepted.
  56. This option is used in
  57. conjunction with the hostname option to set the
  58. hostname validator. For more
  59. informations about possible values of this
  60. option, look at
  61. <link linkend="zend.validate.set.hostname">Hostname</link>
  62. and possible
  63. <constant>ALLOW</constant>
  64. * constants. This option defaults to
  65. <constant>ALLOW_DNS</constant>
  66. .
  67. </para>
  68. </listitem>
  69. <listitem>
  70. <para>
  71. <emphasis>hostname</emphasis>
  72. : Sets the hostname validator with which the
  73. domain part of the email address
  74. will be validated.
  75. </para>
  76. </listitem>
  77. <listitem>
  78. <para>
  79. <emphasis>mx</emphasis>
  80. : Defines if the MX records from the server should be
  81. detected. If this option is
  82. defined to
  83. <constant>TRUE</constant>
  84. then the MX
  85. records are used to verify if the server
  86. accepts emails. This option
  87. defaults to
  88. <constant>FALSE</constant>
  89. .
  90. </para>
  91. </listitem>
  92. <listitem>
  93. <para>
  94. <emphasis>deep</emphasis>
  95. : Defines if the servers MX records should be verified
  96. by a deep check. When this
  97. option is set to
  98. <constant>TRUE</constant>
  99. then
  100. additionally to MX records also the A, A6 and
  101. <constant>AAAA</constant>
  102. records
  103. are used to verify if the server accepts emails. This option defaults to
  104. <constant>FALSE</constant>
  105. .
  106. </para>
  107. </listitem>
  108. <listitem>
  109. <para>
  110. <emphasis>domain</emphasis>
  111. : Defines if the domain part should be checked.
  112. When this option is set to
  113. <constant>FALSE</constant>
  114. , then only the local part
  115. of the email address will be checked. In this case the
  116. hostname validator will
  117. not be called. This option defaults to
  118. <constant>TRUE</constant>
  119. .
  120. </para>
  121. </listitem>
  122. </itemizedlist>
  123. <programlisting language="php"><![CDATA[
  124. $validator = new Zend_Validate_EmailAddress();
  125. $validator->setOptions(array('domain' => false));
  126. ]]></programlisting>
  127. </sect3>
  128. <sect3 id="zend.validate.set.email_address.complexlocal">
  129. <title>Complex local parts</title>
  130. <para>
  131. <classname>Zend_Validate_EmailAddress</classname>
  132. se comparará con cualquier
  133. dirección de correo válida de acuardo a RFC2822.
  134. Por ejemplo, correos electrónicos válidos incluyen
  135. <code>bob@domain.com</code>
  136. ,
  137. <code>bob+jones@domain.us</code>
  138. ,
  139. <code>"bob@jones"@domain.com</code>
  140. y
  141. <code>"bob jones"@domain.com</code>
  142. </para>
  143. <para>
  144. Algunos formatos obsoletos de email actualmente no validan
  145. (por ejemplo los retornos de carro o "\" un caracter en una dirección
  146. de correo electrónico).
  147. </para>
  148. </sect3>
  149. <sect3 id="zend.validate.set.email_address.purelocal">
  150. <title>Validating only the local part</title>
  151. <para>
  152. If you need
  153. <classname>Zend_Validate_EmailAddress</classname>
  154. to check only the local
  155. part of an email address, and want to disable validation of the
  156. hostname, you can
  157. set the
  158. <property>domain</property>
  159. option to
  160. <constant>FALSE</constant>
  161. . This forces
  162. <classname>Zend_Validate_EmailAddress</classname>
  163. not to validate the hostname part of
  164. the email address.
  165. </para>
  166. <programlisting language="php"><![CDATA[
  167. $validator = new Zend_Validate_EmailAddress();
  168. $validator->setOptions(array('domain' => FALSE));
  169. ]]></programlisting>
  170. </sect3>
  171. <sect3 id="zend.validate.set.email_address.hostnametype">
  172. <title>Validating different types of hostnames</title>
  173. <para>
  174. La parte nombre de host de una dirección de correo es validado contra
  175. <link linkend="zend.validate.set.hostname">
  176. <classname>Zend_Validate_Hostname</classname>
  177. </link>
  178. .
  179. Por defecto sólo son aceptados nombres de host DNS de la forma
  180. <methodname>domain.com</methodname>
  181. , aunque si lo desea también puede aceptar
  182. direcciones IP y nombres de host locales.
  183. </para>
  184. <para>
  185. Para ello necesita instanciar a
  186. <classname>Zend_Validate_EmailAddress</classname>
  187. pasando un parámetro para indicar el tipo de nombres de host que quiere aceptar.
  188. Más detalles están incluidos en
  189. <classname>Zend_Validate_EmailAddress</classname>
  190. ,
  191. aunque abajo hay un ejemplo de cómo aceptar tanto nombres de host DNS y
  192. locales:
  193. </para>
  194. <programlisting language="php"><![CDATA[
  195. $validator = new Zend_Validate_EmailAddress(
  196. Zend_Validate_Hostname::ALLOW_DNS |
  197. Zend_Validate_Hostname::ALLOW_LOCAL);
  198. if ($validator->isValid($email)) {
  199. // email parece ser válido
  200. } else {
  201. // email es inválido; muestre las razones
  202. foreach ($validator->getMessages() as $message) {
  203. echo "$message\n";
  204. }
  205. }
  206. ]]></programlisting>
  207. <sect3 id="zend.validate.set.email_address.checkacceptance">
  208. <title>Verificar si el nombre de host realmente acepta email</title>
  209. <para>
  210. Sólo porque una dirección de correo electrónico está en el formato correcto,
  211. no necesariamente significa que esa dirección de correo electrónico
  212. existe realmente. Para ayudar a resolver este problema, puede usar la
  213. validación MX para comprobar si existe una entrada MX (email) en el
  214. registro DNS para correo electrónico en ese nombre de host.
  215. Esto le dice que el nombre de host acepta email, pero no le dice si la
  216. dirección de correo electrónico exacta es válida en si misma.
  217. </para>
  218. <para>
  219. La comprobación MX no está activada por defecto y en este momento es
  220. soportada sólo por plataformas UNIX.
  221. Para habilitar el control MX puede pasar un segundo parámetro al
  222. constructor
  223. <classname>Zend_Validate_EmailAddress</classname>
  224. .
  225. </para>
  226. <programlisting language="php"><![CDATA[
  227. $validator = new Zend_Validate_EmailAddress(
  228. array(
  229. 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
  230. 'mx' => true
  231. )
  232. );
  233. ]]></programlisting>
  234. <note>
  235. <title>MX Check under Windows</title>
  236. <para>
  237. Within Windows environments MX checking is only available when
  238. <acronym>PHP</acronym>
  239. 5.3 or above is used. Below
  240. <acronym>PHP</acronym>
  241. 5.3 MX
  242. checking will not be used even if it's activated within the options.
  243. </para>
  244. </note>
  245. <para>
  246. Alternativamente, para activar o desactivar la validación MX puede pasar
  247. <constant>TRUE</constant>
  248. o
  249. <constant>FALSE</constant>
  250. a
  251. <methodname>$validator->setValidateMx()</methodname>
  252. .
  253. </para>
  254. <para>
  255. Al habilitarlo, se usarán las funciones de red para comprobar
  256. la presencia de un registro MX en el nombre de host de la dirección
  257. de correo electrónico que desea validar.
  258. Tenga en cuenta esto probablemente hará más lento su script.
  259. </para>
  260. <para>
  261. Sometimes validation for MX records returns false, even if emails are accepted. The
  262. reason behind this behaviour is, that servers can accept emails even if they do not
  263. provide a MX record. In this case they can provide A, A6 or
  264. <constant>AAAA</constant>
  265. records. To allow
  266. <classname>Zend_Validate_EmailAddress</classname>
  267. to check also for
  268. these other records, you need to set deep MX validation. This can be done at initiation
  269. by setting the
  270. <property>deep</property>
  271. option or by using
  272. <methodname>setOptions()</methodname>
  273. .
  274. </para>
  275. <programlisting language="php"><![CDATA[
  276. $validator = new Zend_Validate_EmailAddress(
  277. array(
  278. 'allow' => Zend_Validate_Hostname::ALLOW_DNS,
  279. 'mx' => true,
  280. 'deep' => true
  281. )
  282. );
  283. ]]></programlisting>
  284. <warning>
  285. <title>Performance warning</title>
  286. <para>
  287. You should be aware that enabling MX check will slow down you script because of the
  288. used network functions. Enabling deep check will slow down your script even more as
  289. it searches the given server for 3 additional types.
  290. </para>
  291. </warning>
  292. <note>
  293. <title>Disallowed IP addresses</title>
  294. <para>
  295. You should note that MX validation is only accepted for external servers. When
  296. deep
  297. MX validation is enabled, then local IP addresses like
  298. <command>192.168.*</command>
  299. or
  300. <command>169.254.*</command>
  301. are not accepted.
  302. </para>
  303. </note>
  304. </sect3>
  305. <sect3 id="zend.validate.set.email_address.validateidn">
  306. <title>Validating International Domains Names</title>
  307. <para>
  308. <classname>Zend_Validate_EmailAddress</classname>
  309. también comparará caracteres
  310. internationales que existen en algunos dominios.
  311. Esto se conoce como soporte de International Domain Name (IDN).
  312. Está activado por defecto, aunque puede deshabilitarlo internamente
  313. cambiando el ajuste a través del objeto
  314. <classname>Zend_Validate_Hostname</classname>
  315. que existe en
  316. <classname>Zend_Validate_EmailAddress</classname>
  317. .
  318. </para>
  319. <programlisting language="php"><![CDATA[
  320. $validator->getHostnameValidator()->setValidateIdn(false);
  321. ]]></programlisting>
  322. <para>
  323. Sobre el uso de
  324. <methodname>setValidateIdn()</methodname>
  325. encontrará más información
  326. en la documentación de
  327. <classname>Zend_Validate_Hostname</classname>
  328. .
  329. </para>
  330. <para>
  331. Tenga en cuenta que los IDNs se validarán solo si
  332. usted permite que nombres de host DNS sean validados.
  333. </para>
  334. </sect3>
  335. <sect3 id="zend.validate.set.email_address.validatetld">
  336. <title>Validación de dominios de nivel superior</title>
  337. <para>
  338. Por defecto, un nombre de host se cotejará con una lista conocida de TLDs.
  339. Está activado por defecto, aunque puede deshabilitarlo cambiando el
  340. ajuste a través del objeto interno
  341. <classname>Zend_Validate_Hostname</classname>
  342. que existe en
  343. <classname>Zend_Validate_EmailAddress</classname>
  344. .
  345. </para>
  346. <programlisting language="php"><![CDATA[
  347. $validator->getHostnameValidator()->setValidateTld(false);
  348. ]]></programlisting>
  349. <para>
  350. Encontrará más información sobre el uso de
  351. <methodname>setValidateTld()</methodname>
  352. en la documentación de
  353. <classname>Zend_Validate_Hostname</classname>
  354. .
  355. </para>
  356. <para>
  357. Tenga en cuenta que los TLDs se validarán solo si
  358. usted permite que nombres de host DNS sean validados.
  359. </para>
  360. </sect3>
  361. <sect3 id="zend.validate.set.email_address.setmessage">
  362. <title>Setting messages</title>
  363. <para>
  364. <classname>Zend_Validate_EmailAddress</classname>
  365. makes also use of
  366. <classname>Zend_Validate_Hostname</classname>
  367. to check the hostname part of a given
  368. email address. As with Zend Framework 1.10 you can simply set messages for
  369. <classname>Zend_Validate_Hostname</classname>
  370. from within
  371. <classname>Zend_Validate_EmailAddress</classname>
  372. .
  373. </para>
  374. <programlisting language="php"><![CDATA[
  375. $validator = new Zend_Validate_EmailAddress();
  376. $validator->setMessages(
  377. array(
  378. Zend_Validate_Hostname::UNKNOWN_TLD => 'I don't know the TLD you gave'
  379. )
  380. );
  381. ]]></programlisting>
  382. <para>
  383. Before Zend Framework 1.10 you had to attach the messages to your own
  384. <classname>Zend_Validate_Hostname</classname>
  385. , and then set this validator within
  386. <classname>Zend_Validate_EmailAddress</classname>
  387. to get your own messages returned.
  388. </para>
  389. </sect3>
  390. </sect2>
  391. </sect2>
  392. <!--
  393. vim:se ts=4 sw=4 et:
  394. -->