Verificação da sintaxe do e-mail 1.0

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.

[ Hits: 11.738 ]

Por: dasdasdsda em 28/07/2003


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 = "[email protected]";

/**
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
[email protected]
**/

?>

:P Qualquer bug, correção, sei lá.. entre em contato :]
[email protected]

   

Páginas do artigo
   1. O script
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Iniciando no mundo das expressões regulares (parte 1)

Expressões regulares no PHP

Iniciando no mundo das expressões regulares (parte 2)

Criando sites para celular com WML

MVC - Conceito e exemplo em PHP

  
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 [email protected], 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 protected]" ou "[email protected]" 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 protected]"

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