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
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…