Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Verificação da sintaxe do e-mail 1.0
Linux user
asphp
28/07/2003
Script que usa um sistema muito poderoso de verificação de sintaxe de uma string de e-mail e verifica se a string é válida ou não. Usa expressões regulares e tem suporte a dividir o e-mail em usuário, domínio e os sufixos, podendo manipulá-los de sua forma.
Por: dasdasdsda
[ Hits: 5880 ]
Conceito: 6.2   3 voto(s)3 voto(s)3 voto(s)3 voto(s)3 voto(s) + quero dar nota ao artigo

O script

Bom, optei por comentar o script aqui apresentado ao invés de explicá-lo no texto. Esse artigo foi retirado do site www.asphp.com.br, que é meu e também nunca o termino :/ (tá brabo arranjar tempo :/. O estudo, o trabalho e a balada do fim de semana estão me deixando sem tempo :])

Mas esta aí, não modifique a expressão regular se não souber muito bem sobre seu funcionamento.

Espero que este script auxilie o pessoal :P e quem precisa ter um site seguro, que não permita os sacanas fazerem cadastros com e-mails inválidos.

<?
/**
Define o tipo de conteúdo usado no documento, no momento usado é o XHTML, no entanto esta instrução pode ser deletada do script, apenas adapte as tags presentes no script para HTML4 se for usá-lo.
**/

header("content-type: text/xhtml");

/** ex: $email = $_GET['email'] ..$_REQUE... alguma informação vinda de um formulário etc e tal **/
$email = "webmaster@asphp.com.br";

/**
Expressão regular que verifica se a string tem a sintaxe de um endereço de e-mail, suporte infinitos sufixos: .com.br, .ms.gov.br, .br

Na expressão regular ela suporta os caracteres "-","_" e o "." como partes do login.
    no domínio ela aceita apenas o caractere "-"
    sem contar que ele suporta números :]
    nos sufixos ele suporta letras e números
**/

eregi("([\._0-9A-Za-z-]+)@([0-9A-Za-z-]+)(\.[0-9A-Za-z\.]+)",$email,$match);

/**
Divide os valores dos casamentos da ER e separa em variáveis, $email_comp é o email completo para você verificar, portanto se a variável $email_comp for igual a $email o e-mail será válido
**/

list($email_comp,$login,$domain,$sufixies) = $match;

/**
Inicia a verificação do email, conforme dito, se $email_comp for igual a $email, o email será válido
**/

print ("<br/>\n<font face=\"verdana\" size=\"2\">\n<li>");
if ($email_comp == $email) {
    print ("E-mail ($email) é válido...");
    /** Instruções caso o e-mail seja válido aqui **/
}
else {
    print ("E-mail ($email) é inválido...");
    /** Instruções caso o e-mail seja INválido aqui **/
}
print ("</li>\n</font>\n");

/**
Não tive muito tempo para testar, mas qualquer bug favor me contatar
webmaster@asphp.com.br
**/

?>

:P Qualquer bug, correção, sei lá.. entre em contato :]
webmaster@asphp.com.br





Páginas do artigo
   1. O script

Outros artigos deste autor
Nenhum artigo encontrado.

Leitura recomendada
Nenhum artigo encontrado.

Comentários
[1] Comentário enviado por arknoid em 04/08/2003 - 11:04h:

Script é script....artgo é artigo!!!!
mas tah muito bom seu script!
estou dando noa 9.0!!! /falow

[2] Comentário enviado por fabio em 04/08/2003 - 11:33h:

Uma classe que costumo utilizar para tal tipo de tarefa é a email_validation:
http://www.phpclasses.org/browse.html/package/13.html

Ela, além de verificar a sintaxe do endereço de e-mail, também verifica nos servidores DNS se o domínio é válido e se o usuário existe. Por exemplo, posso dizer que sou fulano@lalala.com, isso enganaria as expressões regulares, mas não a classe email_validation :)

[3] Comentário enviado por asphp em 04/08/2003 - 18:45h:

Eh... fabio. eh soh ver o titulo.. ele soh verifica a SINTAXE :P .. ta bem claro.. mas valeu por comentar sohre esse email_validation.. eh bom saber q ele existe :)

[4] Comentário enviado por luckdex em 01/02/2007 - 05:58h:

Esta sua expressão não está montada corretamente.. o cara pode colocar "email@dom.com.kfksdf..dsjfhd..dd." ou "...email@com.c.g.s.w" que ele aceita..

Analisando:

([\._0-9A-Za-z-]+)@([0-9A-Za-z-]+)(\.[0-9A-Za-z\.]+)

1º E-mail não pode começar com . (ponto)
2º Você não pode colocar . na última lista de metacaracteres! Porque senão o cara pode ir colocando pontos e sem completar com um br, simplesmente coloca "email@dom.."

O ideal seria:

^([a-zA-Z)([\._0-9A-Za-z-]+)@([0-9A-Za-z-]+)(\.[0-9A-Za-z]+)(\.[A-Za-z][A-Za-z0-9]+)?$


Alteração:

- O usuário não poderá usar . (ponto) no começo do e-mail.

- Depois do @ os pontos são ordenados, ou seja, será obrigado a colocar um . e depois poderá colocar outro ponto se quiser (?) e sempre colocando caracteres entre eles.

- Após o segundo ponto não poderá colocar mais NENHUM . (ponto)



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.