2010-07-30 17 views

Respuesta

3

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.

+0

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

+1

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

+0

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

2

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

+0

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

1

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.

Cuestiones relacionadas