Cómo realizar la validación de un correo electrónico ingresado en un formulario usando PHP

Descargo de responsabilidad: tenía la misma pregunta y traté de construir una solución simple para ella en WebLegit.

La respuesta realmente depende de lo que se espera de la validación. Si solo se requiere validación de sintaxis, entonces una expresión regular simplemente haría un buen trabajo. La expresión regular real puede ser demasiado, por lo que se usa una expresión regular más indulgente. Algo como esto

función validateEmail (correo electrónico) {
var re = / ^ (([^ () \ [\] \\.,;: \ [correo electrónico protegido] “] + (\. [^ () \ [\] \\.,;: \ [correo electrónico protegido] “] +) *) | (“. + “)) @ ((\ [[0-9] {1,3} \. [0-9] {1,3} \. [0 -9] {1,3} \. [0-9] {1,3}]) | (([a-zA-Z \ -0-9] + \.) + [A-zA-Z] { 2,})) $ /;
volver re.test (correo electrónico);
}

Llegar al segundo tipo de validación sobre si se puede entregar un correo electrónico real o no es un juego completamente diferente. Hay muchas compañías que afirman hacerlo con cierto grado de precisión, pero el hecho es que existen algunas limitaciones. Más que a menudo, estas empresas almacenan todas las direcciones de correo electrónico de diferentes fuentes para construir su base de datos y mejorar su precisión. Una forma de verlo es que les está dando a todos sus usuarios.

Sin desviarse de la pregunta original, las validaciones normales son

  1. Sintaxis
  2. Verifique si el registro MX existe para el dominio
  3. Compruebe si el servidor de correo existe intentando conectarse
  4. Conéctese al servidor de correo y realice la solicitud ficticia para enviar un correo electrónico

Algunos servidores de correo se conectan solo desde una lista filtrada de direcciones IP, algunos buzones de correo son aceptados, lo que significa que aceptan cualquier prefijo de correo electrónico para su dominio, lo que lo dificulta.

Uno puede codificar todo esto o utilizar algún servicio, de cualquier manera que se requiera algún tipo de integración o codificación. Significa que debe escribir código y mantenerlo si usted mismo es programador o solicita ayuda.

Si está buscando una integración fácil y rápida donde no tiene que escribir ningún código, intente WebLegit. Intentamos hacerlo como lo haríamos nosotros mismos, por lo que se requiere casi cero codificación para la integración, es solo una línea del complemento jQuery que debe agregarse para hacer el trabajo en la página web. No almacenamos ninguna dirección de correo electrónico que verifiquemos y tampoco hacemos validaciones masivas.

El objetivo principal es asegurarse

  1. Los usuarios reales no se pierden porque cometieron un error tipográfico
  2. No es necesario almacenar usuarios de spam en la base de datos si no son correos electrónicos reales.
  3. Y no desperdicia $$ para enviar correos electrónicos a direcciones no válidas.

No pretendemos ser 99% precisos, pero aún podemos hacer un muy buen trabajo al filtrar los correos electrónicos malos y dar otra oportunidad a los usuarios reales para corregir sus errores tipográficos.

La forma básica de validación es usar una expresión regular. Una expresión regular simple como “^ [correo electrónico protegido] +” detectaría muchos tipos de errores de direcciones de correo electrónico ingresadas en formularios. Puede usar una expresión regular en el lado del servidor en PHP o en el lado del navegador en JavaScript.

Puede usar expresiones regulares más complejas para ser más estrictas, pero eso no significa que se pasarían todas las direcciones.

Una forma más efectiva de validación es simular la entrega de correo al servidor SMTP de destino. Si ese servidor rechaza al remitente o al destinatario, puede considerar que el correo electrónico no es válido.

He desarrollado una clase PHP que puede realizar estos y otros tipos de validación en direcciones de correo electrónico: Validación de correo electrónico PHP: Determine si una dirección de correo electrónico determinada es válida.

Una cosa que puede hacer es detectar errores tipográficos, como cuando escribe [correo electrónico protegido] en lugar de [correo electrónico protegido] . Esto funciona como la función ¿Quiso decir? De la búsqueda de Google. He escrito un artículo sobre estos tipos de validación titulado Did You Mean Advanced Email Validation in PHP – Blog del paquete de validación de correo electrónico PHP.

Use filtros PHP para tales cosas:

Validar filtros

Ejemplo de uso:

$ email = ” [correo electrónico protegido] “;

if (filter_var ($ email, FILTER_VALIDATE_EMAIL) === falso) {

echo (“$ email no pasó la validación”);

} más {

echo (“$ email es válido”);

}

¿Validar si la dirección está en la forma correcta? ¿Validar si el servidor existe? ¿Validar si existe la dirección (buzón)?

Todas son cosas diferentes, y todas se hacen de manera diferente.

Validar con php no es una buena idea. Use ajax / javascript

Por cierto para php, mira esto

PHP 5 Validación de formulario

Usa expresiones regulares en php