← Desenvolvimento

Validação de emails.

Lida 1380 vezes

Offline

reluz 
Membro
Mensagens 6 Gostos 0
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 4 Level 3 Level 2 Level 1 First Post Signature Karma

Boas,

Esta é a minha primeira participação neste comunidade, por isso espero que seja util  :wink:

Todos os webmasters que permitem o registo de utilizadores, gostam de ter utilizadores reais, e não spam.

Tendo em conta que o acesso às mailboxes temporárias está cada vez mais massificado, convém controlar os registos.

Eu fiz um pequeno script, que não é nada de especial, apenas verifica os domínios dos emails para confirmar se pertencem a um desses serviços de email temporários.

É composto por dois ficheiros. O primeiro contem a lista dos domínios proibidos, o segundo contem a função de verificação :

Função de verificação (blacklist.php):
Código: [Seleccione]
<?php


$blacklist 
= array();

$fp fopen("./blacklist""r") or die("Erro na abertura da lista negra");

while(!
feof($fp)){
        
array_push($blacklistfgets($fp));
}

function 
blacklist($email){
        GLOBAL 
$blacklist;
        for(
$i=0;$i<sizeof($blacklist) - 1;$i++){
                if(isset(
$blacklist[$i])){
                        if(
eregi(trim($blacklist[$i]), trim($email)))
                                return 
null;
                }
        }
        return 
1;

}

?>


Ficheiro com os domínios proibidos (nome : blacklist) :

Código: [Seleccione]
temporaryinbox.com
golfilla.info
mx0.wwwnew.eu
bodhi.lawlita.com
mail.misterpinball.de
mail.svenz.eu
mail.htl22.at
mailinator.com
mailinator2.com
sogetthis.com
mailin8r.com
mailinator.net
spamherelots.com
thisisnotmyrealemail.com
trashymail.com


Para utilizar, basta fazer "include" do ficheiro para a nossa página e colocar no sitio onde queremos validade emails.

Exemplo (ficheiro black.php):

Código: [Seleccione]
<?php

  $email 
$_GET['email'];

  include(
"blacklist.php");

  if (
blacklist($email))
      echo 
"ENDEREÇO VÁLIDO";
  else
      echo 
"ENDEREÇO INVÁLIDO\n";

  
?>


Ao chamar pelo browser o ficheiro black.php?email=blabla@temporaryinbox.com o resultado será uma mensagem "Endereço Inválido". Caso o domínio não esteja na lista, o resultado será então validado.



Peço desculpa se alguém já tinha implementado uma solução como esta, mas não encontrei.

Comentem :P


PS: Podem sacar o código de exemplo de http://www.campanhas-promocionais.com/blacklist.tgz
Offline

Nuno 
Administrador
Mensagens 7780 Gostos 216
Feedback +2

Troféus totais: 42
Trófeus: (Ver todos)
100 Poll Votes Level 7 Search Mobile User Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes

Olá reluz, bem-vindo ao +t

Obrigado bem útil!

PS: Es tu o chato do campanhas-promocionais.com ...hummm!
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Isso vai bloquear tudo o que tiver o que esta na blacklist, inclusivé:

cliente1.provedor.com

se tiveres bloqueado apenas o provedor.com


para quem quer apenas os especificos, poderia fazer:
Código: [Seleccione]
$email = explode('@', $email);
e depois comparar se são iguais
Código: [Seleccione]
if($email[1] == $blacklist[$i]) return null;
Offline

reluz 
Membro
Mensagens 6 Gostos 0
Troféus totais: 21
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 4 Level 3 Level 2 Level 1 First Post Signature Karma

A ideia é bloquear domínios inteiros para impedir o uso de contas de email temporárias :wink:

Por isso não percebi muito bem a tua ideia, mas parece-me que estás a dizer que se alguém tiver um email do tipo "temporaryinbox.com@mail.pt" que seria bloqueado. É isso ?

Se é, basta criar o ficheiro de blacklist de provedores de email  e acrescentar a "@" aos domínios dessa lista.

Visto que o @ é um caracter reservado, se for detectado um "@temporaryinbox.com" é porque é mesmo o domínio.

Se quiserem bloquear emails específicos também o podem fazer, basta colocarem lá o email completo.