É uma rotina pequena e, por isso mesmo, limitada. Esta rotina não verifica a existência do endereço de e-mail, ela apenas checa se há erros de sintaxe.
205 sub checaEmail {
206 $temp1 = shift(@_);
207 $temp1 =~ s/_/a/g;
208 $temp1 =~ s/-/a/g;
209 unless ($temp1 =~ /\w+@\w+.\w+/) {
210 $alert = "<p><center><table border=\"2\" bgcolor=\"#ff0000\"><tr><td><tt>\n";
211 $alert .= "<font face=\"Comic Sans MS, Arial, Courier New\"><center>\n";
212 $alert .= "Desculpe, mas o endereço de e-mail não está correto.\n";
213 $alert .= "Por favor, tente novamente.</td></tr></table><br>\n";
214 return 0; }
215 return 1; # retorna true
216 }
217
A subrotina é chamada com um parâmetro, o valor do campo do formulário email. Este parâmetro é obtido através de um shift e atribuído à variável $temp1 (206). A seguir, são retirados todos os caracteres "_" e "-" (linhas 207 e 208) e verifica-se se $temp1 possui um caracter "@".
Caso não exista a arroba (209), atribui-se à variável $alert uma string contendo o código HTML de uma tabela com um aviso (linhas 210 a 213) e força-se o retorno com valor zero (214), o mesmo que falso. Caso contrário, o valor de retorno é 1 (215) ou verdadeiro.
Analisando a chamada a esta subrotina, if (!&checaEmail($FORM{'email'})) { &fazMaster($alert); } verifica-se que, caso a subrotina checaMail() retornar falso, imediatamente é chamada a subrotina fazMaster() carregando a variável $alert, contendo a string com o código HTML. A rotina fazMaster utilizará $alert para dar a mensagem de erro e encerra a execução do script. Apenas para refrescar a memória, analise as linhas 105 e 127:
104 sub fazMaster {
105 $alert = shift(@_);
106 print <<_FORM_MASTER_;
107 Content-type: text/html
108
109 <html><head><title>Contato com os bastidores</title><head>
...
127 $alert
128 <form method="post">
...
Se não forem encontrados erros, a subrotina fazMaster() nem é chamada e o script vai para a próxima checagem.
|