Validação de e-mail usando o DIG
Publicado por João Paulo de Oliveira Faria 16/09/2004
[ Hits: 7.560 ]
Homepage: http://www.jpfaria.com
Classe que valida email usando o DIG para conferir se o domínio digitado existe na internet dentre outras conferências.
Funciona somente em servidores *unix que tenha o DIG corretamente instalado.
Na maioria das versões Linux o dig ja vem instalado.
Contribuições e melhorias no código serão
bem vindas.
<? // validatemail.php /* -------------------------------------------------------------------------- VALIDAÇÃO DE EMAIL USANDO O DIG AUTOR: JOÃO PAULO DE OLIVEIRA FARIA ICQ: 13041300 MSN: JOAOPAULO@AWM.COM.BR EMAIL: JOAOPAULO@DEOLIVEIRA.COM.BR VERSÃO: 0.1.0 -------------------------------------------------------------------------- */ class validatemail { var $config = array( "stop_error" => 2, "show_message" => 1, "enable_dig" => 1 ); var $get = array( "field" => 1, "value" => 1, "message" => 1, "status" => 1 ); var $inf = array( "dominio" => 1, "email" => 1, "usuario" => 1 ); function setConfig($config){ foreach ($config as $key => $value) { if ($this->config[$key]){ $this->config[$key] = "$config[$key]"; } } } function setGet($get){ foreach ($get as $key => $value) { if ($this->get[$key]){ $this->get[$key] = "$get[$key]"; } } } function setInf($inf){ foreach ($inf as $key => $value) { if ($this->inf[$key]){ $this->inf[$key] = "$inf[$key]"; } } } function stringLow($text){ $arrayLower=array('ç' ,'â','ã','à','á','ä' ,'é','è','ê','ë' ,'í','ì','î','ï' ,'ó','ò','ô','õ','ö' ,'ú','ù','û','ü'); $arrayUpper=array('Ç' ,'Â','Ã','Á','À','Ä' ,'É','È','Ê','Ë' ,'Í','Ì','Î','Ï' ,'Ó','Ò','Õ','Ô','Ö' ,'Ú','Ù','Û','Ü'); $arrayFinal=array('c' ,'a','a','a','a','a' ,'e','e','e','e' ,'i','i','i','i' ,'o','o','o','o' ,'u','u','u','u'); $text=strtolower($text); $text=str_replace($arrayLower, $arrayFinal, $text); $text=str_replace($arrayUpper, $arrayFinal, $text); return $text; } function showMessage(){ if ($this->config['show_message']=="1"){ $get = $this->get['status']; if ($get=="1"){ $msg = "OK ->"; }else{ $msg = "ERROR ->"; } $message = $this->get['message']; $value = $this->get['value']; $field = $this->get['field']; echo $msg." ".$message.' / Field:['.$field.'] Value:['.$value.']'."\n"; } } function stop(){ if ($this->config['stop_error']=="1"){ exit(); } } function chkLogin($login){ if (strlen($login)>32){ $get = array( "field" => "usuario", "value" => "$login", "message" => "MAX LENGHT OF LOGIN IS 32", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; }else if (is_numeric(substr($login, 0, 1))){ $get = array( "field" => "usuario", "value" => "$login", "message" => "THE FIRST CHAR IS NUMBER", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; }else{ $arrayIni=array( '"','\'','','\\','!','#', '$','%','¨','&','*', '(',')','=','+','{','}', '`','´','~','^',']','[', ',',':',';','/','?','|',' ','ñ', 'ç','â','ã','à','á','ä' ,'é','è','ê','ë' ,'í','ì','î','ï' ,'ó','ò','ô','õ','ö' ,'ú','ù','û','ü','Ç' ,'Â','Ã','Á','À','Ä' ,'É','È','Ê','Ë' ,'Í','Ì','Î','Ï' ,'Ó','Ò','Õ','Ô','Ö' ,'Ú','Ù','Û','Ü' ); $arrayFinal=array(); $text=str_replace($arrayIni, $arrayFinal, $login); if($text!=$login){ $get = array( "field" => "usuario", "value" => "$login", "message" => "ILEGAL CHARS", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; }else{ return TRUE; } } } function chkDig($domain){ $return = shell_exec("dig ".$domain." +trace"); $lines = explode("\n",$return); $cont = 0; foreach ($lines as $line_num => $line) { if (ereg('Received',$line)){ $cont++; } } if ( $cont <= "3" ){ $get = array( "field" => "dominio", "value" => "$domain", "message" => "DIG WARNING: INVALID DOMAIN", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; echo "aqui"; }else{ $inf = array( "dominio" => "$domain" ); $this->setInf($inf); return TRUE; } } function chkDomain($domain){ $inf = array( "dominio" => "$domain" ); $this->setInf($inf); $domainlower = strtolower($domain); $arrayIni=array( '"','\'','','\\','!','#', '$','%','¨','&','*', '(',')','=','+','{','}', '`','´','~','^',']','[', ',',':',';','/','?','|','@', 'ñ', 'ç','â','ã','à','á','ä' ,'é','è','ê','ë' ,'í','ì','î','ï' ,'ó','ò','ô','õ','ö' ,'ú','ù','û','ü','Ç' ,'Â','Ã','Á','À','Ä' ,'É','È','Ê','Ë' ,'Í','Ì','Î','Ï' ,'Ó','Ò','Õ','Ô','Ö' ,'Ú','Ù','Û','Ü' ); $arrayFinal=array(); $newdomain=str_replace($arrayIni, $arrayFinal, $domain); if($domain!=$newdomain){ $get = array( "field" => "dominio", "value" => "$domain", "message" => "ILEGAL CHAR DOMAIN", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; }elseif (!is_string(substr($domainlower, 0, 1))){ $get = array( "field" => "dominio", "value" => "$domain", "message" => "ILEGAL CHAR IN FIRST CHAR DOMAIN", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; }elseif($this->config['enable_dig']==1 and $this->chkDig($domainlower)){ return TRUE; }else{ $get = array( "field" => "email", "value" => "$domain", "message" => "INVALID DOMAIN", "status" => "2" ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; } } function chkEmail($email){ if (!empty($email)){ $field_email = explode('@',$email); $email = $this->stringLow($email); $usuario = $this->stringLow($field_email[0]); $domain = $this->stringLow($field_email[1]); $inf = array( "email" => "$email", "usuario" => "$usuario" ); $this->setInf($inf); if ((!empty($field_email['0']) and $this->chkLogin($field_email['0'])) and (!empty($field_email['1']) and $this->chkDomain($field_email['1']))){ $get = array( "field" => "email", "value" => "$email", "message" => "VALIDATE SUCESSED!!!", "status" => "1" ); $this->get['status'] = "1"; $this->setGet($get); $this->showMessage(); return TRUE; }else{ return FALSE; } }else{ $get = array( "field" => "email", "message" => "EMPTY REQUIRE FIELD", "value" => " ", "status" => "2", ); $this->setGet($get); $this->showMessage(); $this->stop(); return FALSE; } } } $validatemail = new validatemail; ?> <? // programa.php require_once("validatemail.php"); /* CONFIGURAÇÃO */ $config = array( /* Para o script caso de erro 1=Sim 2=Nao */ "stop_error" => 2, /* Mostra mensagens 1=Sim 2=Nao */ "show_message" => 2, /* Usa o programa DIG para validar 1=Sim 2=Nao */ "enable_dig" => 1 ); $validatemail->setConfig($config); /* EXEC */ $email = "joaopaulo@deoliveira.com.br"; /* RETORNA INFORMACOES VALIDADAS e FORMATADAS*/ if($validatemail->chkEmail($email)){ $email = $validatemail->inf['email']; $dominio = $validatemail->inf['dominio']; $usuario = $validatemail->inf['usuario']; $mensagem = $validatemail->get['message']; echo "OK---------- $mensagem<br>"; echo "DOMINIO: $dominio<br>"; echo "USUARIO: $usuario<br>"; echo "EMAIL: $email<br>"; }else{ $email = $validatemail->inf['email']; $dominio = $validatemail->inf['dominio']; $usuario = $validatemail->inf['usuario']; $mensagem = $validatemail->get['message']; echo "ERROR---------- $mensagem<br>" echo "DOMINIO: $dominio<br>"; echo "USUARIO: $usuario<br>"; echo "EMAIL: $email<br>"; echo "<pre>"; print_r($validatemail->get); echo "</pre>"; } ?>
Classe de Internacionalização(Multi linguagens)
Receber atualização de encomendas do correios em seu e-mail
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta