¿Qué solución es mejor, utilizando la validación incorporada filter_var('email', FILTER_VALIDATE_EMAIL)
o una función personalizada?filter_var o función personalizada para la validación de correo electrónico en php
Gracias!
¿Qué solución es mejor, utilizando la validación incorporada filter_var('email', FILTER_VALIDATE_EMAIL)
o una función personalizada?filter_var o función personalizada para la validación de correo electrónico en php
Gracias!
validación personalizada le da más control sobre qué tan lejos quiere ir con esto. Lo que es y no es válido como una dirección de correo electrónico es más complejo de lo que podría pensar, y la mayoría de las veces, es mejor ser demasiado permisivo con esto que demasiado estricto. Después de todo, una dirección de correo electrónico sintácticamente válida no garantiza que la cuenta realmente exista, y mucho menos que se esté utilizando activamente. Algo así como, debe contener un @, al menos un punto después del @, al menos un carácter antes del @, y ninguno de los caracteres ilegales, probablemente sea lo suficientemente bueno en la mayoría de los casos.
PHP no valida las direcciones de correo electrónico según el RFC oficial (no puedo encontrar una referencia para esto ahora, pero apareció aquí recientemente). A pesar de que 'FILTER_VALIDATE_EMAIL' probablemente sea lo suficientemente bueno la mayoría de las veces, recomiendo que no vaya con un comprobador que cumpla con RFC o, como dijiste, tómalo con calma. – deceze
Oh, aquí vamos: http://svn.php.net/repository/php/php-src/branches/PHP_5_3/ext/filter/logical_filters.c Busque la expresión regular en 'php_filter_validate_email'. Es demasiado corto para ser totalmente compatible con RFC. :) – deceze
Mi punto exactamente. El cumplimiento de RFC no significa que existe y funciona. Además, me sorprendería saber que todos los agentes de correo cumplen con RFC. – tdammers
Filtro var correo electrónico para eliminar todos los caracteres, excepto letras, dígitos y !#$%&'*+-/=?^_`{|}[email protected][]
. Ahora depende de usted si quiere ir con esta filtración o crear una solución personalizada.
Y aquí es un excelente artículo sobre que:
Input Validation: Using filter_var() Over Regular Expressions
El filtro * santizing * sí lo hace, pero no el filtro * validating *. Sin ser desinfectado, un correo electrónico "válido" (según el filtro) aún puede contener caracteres distintos de los enumerados anteriormente. – salathe
El filtro de PHP puede ser satisfactorio para la mayoría de las aplicaciones, pero si desea comparar el rendimiento y la validez, consulte este sitio http://www.linuxjournal.com/article/9585 para comprender qué es el cumplimiento de RFC 2822.
me encontré con esto mientras googlear, espero que esto le explica mejor
Usted es bienvenido a usar mi función de PHP libre is_email()
para validar las direcciones. Está disponible here.
Se asegurará de que una dirección sea totalmente compatible con RFC 5321. Opcionalmente, también puede verificar si el dominio existe realmente.
No debe confiar en un validador para decirle si realmente existe la dirección de correo electrónico de un usuario: algunos ISP entregan direcciones no compatibles a sus usuarios, particularmente en países que no usan el alfabeto latino. Más en mi ensayo sobre validación de correo electrónico aquí: http://isemail.info/about.
Eso depende de su función personalizada;) –
Estoy usando este: http://code.iamcal.com/php/rfc822/rfc822.phps por el momento. – Alex