Informática Numaboa - Tutoriais e Programação
Perl+CGI - Um script de verdade
Ter 18 Nov 2008 19:46 |
- Detalhes
- Categoria: Perl e CGI
- Atualização: Quinta, 20 Novembro 2008 11:37
- Autor: vovó Vicki
- Acessos: 10287
A subrotina mandaMaster
Como a segunda chamada ao script é do tipo POST, a expressão condicional if ($ENV{'REQUEST_METHOD'} eq 'POST') retorna verdadeiro e força a execução da linha seguinte que contém a chamada à subrotina mandaMaster(). Esta subrotina nada mais é do que uma rotina para enviar os dados do formulário via e-mail.
\n"; print "Agradeço sua visita e a colaboração.
\n"; print "<br>Seus comentários já foram enviados para a Aldeia.\n"; print "<br><br>Se você forneceu seu e-mail, receberá uma resposta\n"; print " com a maior brevidade possível,\n"; print "<br>além da cópia do seu comentário.\n"; print "\n"; exit; }Esta subrotina começa checando a validade de dois valores enviados através do formulário: o e-mail do usuário e o comentário. As subrotinas chamadas para fazer a checagem serão analisadas adiante para não perdermos o foco da presente análise.
Logo depois, atribuímos um valor à variável $origem. Digamos que o usuário tenha preenchido o campo nome com "Zé" e o campo email com "ze@das.couves". Neste caso a variável $origem recebe o valor "Zé
A seguir é acionado o programa de e-mail do servidor para enviar um e-mail com os dados do formulário. Com open (MAIL,"|$programaMail") acionamos o mailer e abrimos uma sessão de conexão de nome MAIL, a qual fica aguardando os dados que devem ser enviados. A variável $programaMail é a que foi definida no início do script com o valor "/usr/lib/sendmail -t". Os comandos print enviam os dados para o mailer: inicialmente os obrigatórios, como "To", "From" e "Subject". Observe que o "To" usa a variável $masterMail definida no início do script e que "From" se utiliza da variável $origem que acabamos de estabelecer.
Logo a seguir, usando as variáveis do próprio formulário, enviamos os valores dos campos mandaMaster, nome e comentário. Observe que a variável $FORM{'mandaMaster'} corresponde a um campo "escondido" (hidden) que criamos no formulário e que contém o valor da variável $topico enviada através do método GET na primeira chamada ao script. Se você estiver meio perdido com a explicação, volte uma página para rever a subrotina fazMaster.
Se tudo correu bem, os "print" enviaram o e-mail e podemos fechar a conexão MAIL e o programa mailer. Para isto usamos close(MAIL). Só para esclarecer: o nome da conexão pode ser qualquer um, não precisa ser necessariamente MAIL.
Agora é a vez de dar um retorno para o usuário (uma questão de educação :wink:) Se o usuário forneceu um endereço de e-mail, o processo é o mesmo: abrimos uma nova conexão MAIL, "printamos" os elementos obrigatórios "To" e "From", enviamos um texto padrão e fechamos novamente a conexão.
Missão cumprida! Só que o usuário não tem como saber se tudo correu bem. Para avisá-lo e agradecer o contato, geramos uma nova página HTML. Neste exemplo, ao invés de delimitar uma área, usei "print" novamente. Observe que as quebras de linha, neste caso, são obtidas através do caracter de escape \n. A famosa linha em branco após Content-type: text/html é obtida com \n\n. O primeiro \n faz a quebra de linha para o texto Content-type: text/html e o segundo \n faz uma quebra de linha para uma linha vazia!
Formulário de agradecimento gerado, é hora de sair do script com exit e devolver o controle ao navegador. É isso aí, só falta dar uma espiada nas subrotinas de controle de dados checaEmail() e checaComent().