Validar Email en PHP

Kaos

Buenos días!

Alguien en PHP que se atreva a decirme cómo saber si el email del usuario es verdadero o falso?

Me refiero a parte de las tipicas comprobaciones de si tiene @, ti tiene "." etc...

Creo que había un comando que pingeaba el dominio o algo así y era 100% fiable.

A

Con una expresión regular:
ereg("[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$]",$email);

Mira aquí, tanto como para el primero, como para comprobar también el dominio:
http://codewalkers.com/tutorials/73/1.html

Yomosucith

Puedes hacer una comprobacion más a fondo, mirando si existen registros MX para el dominio del email. Asi por ejemplo si ponen noexisto@esteemailesfalso.com con el script del #2 te dira q si existe, pero con el que te digo ahora te dira que no, xque "esteemailesfalso.com" no es un dominio existente con registros MX.

Aquí va (esta sakado de otra web, creo que de un comentario de php.net):


function check_email_mx($email) {
if( (preg_match('/(@.*@)|(..)|(@.)|(.@)|(.)/', $email)) ||
(preg_match('/.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/',$email)) ) {
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}

$email = "noexisto@noexistofijoqueno.com";
if (!check_email_mx($email)) echo "Correo invalido";

---------------------------------------------

LOc0

Mucha sofisticación que se revienta con un simple:

meinventoestaparte@gmail.com

Salu2 ;)

PD: regex + código de confirmación de registro al email y.

Usuarios habituales

  • LOc0
  • Yomosucith
  • Archville
  • Kaos