Validar um endereço email em PHP
Vamos ver uma função muito útil em PHP que serve para verificar a validez de um correio. Na realidade verifica se um endereço de correio electrónico está bem escrito sintaticamente, deixando de lado as comprovações de se o mail existe ou não realmente, as quais não se podem fazer tão facilmente.
Vamos escrever uma função que se chama verificar_email e recebe a cadeia de texto com o email que queremos validar. Se o mail é correcto desde o ponto de vista sintático, isto é, se tem um nome de usuário, uma arroba e uma terminação como o nome de um domínio ou subdomínio, etc, retornará um 1, é dizer, verdadeiro. No caso de que o mail não esteja correctamente escrito, a função retornaria 0, que equivale a falso.
A função em si considera, num principio que o email é errôneo e realiza uma serie de comprovações que, se todas respondem corretamente, dão como conclusão que o email estava correcto. Se alguma de esas comprovações não era correcta, não se chegaria ao fim das comprovações e obteríamos como resultado como se supôs ao principio,isto é, como incorrecto.
Código da função
function verificar_email($email){
$mail_correcto = 0;
//verifico umas coisas
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
//vejo se tem caracter .
if (substr_count($email,".")>= 1){
//obtenho a terminação do dominio
$term_dom = substr(strrchr ($email, '.'),1);
//verifico que a terminação do dominio seja correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//verifico que o de antes do dominio seja correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto)
return 1;
else
return 0;
}
As comprovações
No primeiro if verifico que o email tem pelo menos 6 caracteres (o mínimo), que tem uma arroba e só uma e que não está colocada nem no principio nem no fim.
No segundo if verifica que não tem alguns caractres não permitidos. E os restantes fazem comprovações das diferentes partes do endereço de correio.
Finalmente, restornamos a variável local utilizada para guardar a validez ou incorreção do endereço.
Comentários do artigo
Muito complexo, bastava usar expressão regular e com uma linha de código já teria feito tudo isso...epa, exagerei, seria mais de uma linha, mas seria mais fácil.
esperimente colocar por exemplo:
rafael.exe@hotma
da erro.
Melhor assim Por: Daniel | | 09/2/09
|
/**
* Esta função verifica se uma string dada em $strEmail é um endereço de e-mail válido
* @version 1.0
* @created sábado, 7 de abril de 2007
* @param string $strEmail
* @author Leandro Vieira
*/
function apiki_isEmail($strEmail) {
if ( preg_match('/^([w.-]+)+@+([w.-]+)+.+[a-z]{2,3}$/',$strEmail) ) {
return true;
} else {
return false;
}
}