Validação de e-mail usando o DIG
Publicado por João Paulo de Oliveira Faria 16/09/2004
[ Hits: 7.901 ]
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>";
}
?>
Consulta Amazon! Buscas na Web
Transferir dados do Excel ou TXT para BD utilizando PHP
Cria gráficos de consumo de CPU e Memória a partir de arquivos.
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Assisti Avatar 3: Fogo e Cinzas (4)
Conky, alerta de temperatura alta (11)









