Tutor NumaBoaCHECANDO PARÂMETROS
Tutorial Perl CGI - 7
Silício NumaBoa



Estamos nos "finalmentes" do tutorial. Precisamos apenas dar uma olhada nas rotinas que checam a validade de um endereço de e-mail e que checam a presença de texto no campo "comentários" do formulário. Coisa pouca, principalmente porque, a esta altura, você já é um expert em linguagem Perl ;)



8. Checando parâmetros

A subrotina mandaMaster() começa com duas chamadas a rotinas de crítica. A primeira, checaEmail(), faz a validação de um endereço de e-mail. A segunda, checaComent(), checa se o campo comentário do formulário está vazio.

150 sub mandaMaster {
151
152  if ($FORM{'email'}) {
153    if (!&checaEmail($FORM{'email'})) { &fazMaster($alert); }
154  }
155
156  if (!&checaComent) { &fazMaster($alert); }
157

8.1 Checar a validade de um endereço de e-mail

É 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.



8.2 Checar a existência de texto no campo comentários

No mesmo estilo da chamada anterior, se a subrotina checaComent() retornar falso, a subrotina fazMaster() é chamada com a variável $alert contendo a mensagem de erro e encerrra a execução do script; se retornar verdadeiro, o script continua sua execução sem desvios.

220 sub checaComent {
221   if ($FORM{'comentario'}) { return 1; }
222   $alert = "<p><center><table border=\"2\" bgcolor=\"#ff0000\"><tr><td><tt>\n";
223   $alert .= "<font face=\"Comic Sans MS, Arial, Courier New\"><center>\n";
224   $alert .= " *** Você esqueceu de acrescentar seu comentário *** \n";
225   $alert .= "</td></tr></table>\n";
226   return 0; # retorna false
227 }
228

Observações

O script para o envio de e-mail de contato está completo. Como foi desmembrado em seus blocos funcionais para que pudessem ser analisados, por um lado foi possível detalhar as explicações mas, por outro lado, perdeu-se a noção do conjunto. Para o código completo e SEM A NUMERAÇÃO DE LINHAS, além de um pequeno gráfico do fluxograma, leia o módulo "Script completo".



Todos os scripts CGI deste site são "made in Aldeia". As linguagens utilizadas são principalmente PHP e alguma coisa em Perl. Faça contato: tire dúvidas, solicite matérias, critique e contribua.





@ Tutorial Perl CGI | Dicas | Um script | Primeiras linhas | Segurança | Formulário | Enviar e-mail | Checar | Script completo |

| AAAA | Página Inicial | Mapa do Site | Novidades | Busca | Indique esta página | Mestre da Teia | Voltar |
| Localizador || @ Info NumaBoa > Tutoriais > Perl + CGI - Checando parâmetros
Créditos: vovó Vicki

webdesign sobMedida by vickiSoft - /informatica/tutor/cgiPerl/cgiScript7.php (20.10.00) versão 1.1 de 22.07.03
Licença Creative Commons 1998-2006 Aldeia NumaBoa
Exceto onde especificamente declarado, todo material deste site é disponibilizado de acordo com a Licença Creative Commons.