> Manuales > Taller de PHP

Taller de PHP en el que vamos a utilizar una serie de funciones que nos permitirán verificar si existe el dominio de un correo dado.

En Php existen varias funciones que nos permite obtener la veracidad de direcciones URL, DNS o IPS.

Una de estas funciones, checkdnsrr(), comprueba registros correspondientes a nombres de maquinas o direcciones IP.

Algo que puede resultar muy útil si queremos comprobar, si existe el dominio del correo aportado por el usuario, Sin embargo solo comprueba el dominio, no si la cuenta de correo existe.

Su sintaxis es la siguiente:

checkdnsrr ( string host [, string type])

Busca en DNS entradas del tipo type correspondientes a host. Devuelve verdadero(TRUE) si encuentra algún registro; devuelve false( FALSO) si no encuentra ninguno o sucedió algún error.

type puede ser: A, MX, NS, SOA, PTR, CNAME, o ANY. Por defecto es MX.

El código es el siguiente:

<?? <?php

function validar_email($email){

   $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";

   if(eregi($exp,$email)){

   if(checkdnsrr(array_pop(explode("@",$email)),"MX")){
      return true;
   }else{
      return false;
   }

   }else{

      return false;

   }
}

// para aplicarla

if (validar_email($_GET[correo])){
// coloco las instrucciones
echo 'Es correcto el correo';
}else{
echo 'Es falso el correo';
}

?>


Explicación:

Lo primero es definir nuestra función, que tendrá como nombre validar_email(). Utilizaremos Expresiones regulares para buscar las coincidencias y similitudes entre la expresión ($exp) y el valor de ($email).

Ver: http://www.php.net/eregi

Si esta condición evalúa TRUE entonces quiere decir que efectivamente $email, Comienza por cualquier letra que vaya de [a-z] , [0-9], puede contener un guión, punto u otro, seguido de una @( arroba como obligatorio) y luego se repetiría el proceso para el nombre del dominio, y finalmente un (.) PUNTO como obligatorio, donde continuaría la extensión del dominio como final de la cadena.

Ahora ejecutamos la función checkdnsrr(), Como ya dije anteriormente siempre y cuando eregi, tome el valor TRUE, Con la función explode() dividimos el valor de $email en un ARRAY o MATRIZ, tomando como punto de separación la @ ARROBA. Recordemos que ahora tenemos un Array donde [0] es el usuario del correo y [1] es el domino del correo. Para luego obtener este ultimo valor [1] de la matriz con array_pop().

El siguiente parámetro corresponde a buscar las entradas de tipo MX que es el default de esta función.

Acorde a todas estas condiciones retornamos Booleanos según sea el caso:

return( TRUE/ FALSE );

Un ejemplo:

Si alguien escribe: nosessssssssssssssssssssssssssssssssss@hotmail.com, nuestra función nos devolverá TRUE, recordemos que esta función nos comprueba si existe el host : >>> Hotmail.com , más no el nombre de usuario nossse…

Emmanuel García De Caro

Webmaster de Blasten.com

Manual