Comprovar se existe o domínio do correio

Workshop de PHP no qual vamos utilizar uma série de funções que nos permitirão verificar se existe o domínio de um correio dado.

Por Emmanuel García De Caro


Publicado em: 18/1/08
Valorize este artigo:
Em PHP existem várias funções que nos permite obter a veracidade de endereços URL, DNS ou IPS.

Uma destas funções, checkdnsrr(), comprova registros correspondentes a nomes de máquinas ou endereços IP.

Algo que pode ser muito útil se quisermos comprovar se existe o domínio do correio aportado pelo usuário. Entretanto, só comprova o domínio, não se a conta de correio existe.

Sua sintaxe é a seguinte:

checkdnsrr ( string host [, string type])

Busca em DNS entradas do tipo type correspondentes a host. Devolve verdadeiro(TRUE) se encontrar algum registro; devolve false( FALSO) se não encontrar nenhum ou se tiver acontecido algum erro.

type pode ser: A, MX, NS, SOA, PTR, CNAME, ou ANY. Por padrão é MX.

O código é o seguinte:

<?? <?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 aplicá-la

if (validar_email($_GET[correio])){
// coloco as instruções
echo 'É correto o correio';
}else{
echo 'É falso o correio';
}

?>


Explicação:

O primeiro é definir nossa função, que terá como nome validar_email(). Utilizaremos Expressões regulares para buscar as coincidências e similitudes entre a expressão ($exp) e o valor de ($email).

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

Se esta condição avalia TRUE então quer dizer que efetivamente $email, Começa por qualquer letra que vá de [a-z] , [0-9], pode conter um hífen, ponto ou outro, seguido de um @( arroba como obrigatório) e logo se repetiria o processo para o nome do domínio, e finalmente um (.) PONTO como obrigatório, onde continuaria a extensão do domínio como final da cadeia.

Agora executamos a função checkdnsrr(). Como já disse anteriormente sempre e quando eregi, tome o valor TRUE. Com a função explode() dividimos o valor de $email em um ARRAY ou MATRIZ, tomando como ponto de separação o @ ARROBA. Lembremos que agora temos um Array onde [0] é o usuário do correio e [1] é o domínio do correio. Para logo obter este ultimo valor [1] da matriz com array_pop().

O seguinte parâmetro corresponde a buscar as entradas de tipo MX que é o default desta função.

De acordo com todas estas condições retornamos Booleanos segundo seja o caso:

return( TRUE/ FALSE );

Um exemplo:

Se alguém escreve: nosessssssssssssssssssssssssssssssssss@hotmail.com, nossa função nos devolverá TRUE, lembremos que esta função nos comprova se existe o host : >>> Hotmail.com , porém não o nome de usuário nossse…






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato