Blog de Gonzalo

Blog de programación de Gonzalo López

VALIDAR EMAIL

PHP

Hasta ahora siempre había validado los emails emails en PHP usando expresiones regulares. Pero un compañero me comentó una manera bastante fácil y sencilla para validarlos. Y es usando la función filter_var y resulta bastante sencillo y seguro.
Pongo un ejemplo sencillo para que se pueda ver su funcionamiento.


$email = 'pruebas@gmail.com';
$result = filter_var($email, FILTER_VALIDATE_EMAIL);
var_dump($result);
//Mostrará el correo

$email = 'pruebasgmail.com';
$result = filter_var($email, FILTER_VALIDATE_EMAIL);
var_dump($result);
//Mostrará false

$email = 'pruebas@gmailcom';
$result = filter_var($email, FILTER_VALIDATE_EMAIL);
//Mostrará false

var_dump($result);

Con lo explicado anterior mente se valida que la dirección email está construida correctamente es decir: nombredeusuario@dominio.com. Pero con php podemos ir un paso más allá y comprobar que el dominio del email existe y consiste en usar la función checkdnsrr, esta función busca DNS de registros del tipo del registro que corresponde a un dominio.
Ejemplo:

list($name, $domain) = explode('@',$email);
  if (checkdnsrr(idn_to_ascii($domain), 'A'))
  {
       . . . 
  }
Parámetros de la función checkdnsrr, son el dominio o host y el tipo. Que son los siguientes:
  • MX
  • TXT
  • CNAME
  • A
  • NS
  • SOA
  • PTR
  • AAAA
  • ANY
  • A6
  • SRV
  • NAPTR

Compartir en twitter