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: 10286
Neste módulo do tutorial Perl+CGI vou mostrar como criar um script que permite que visitantes façam contato com o webmaster do site. Vou tentar dissecar este exemplo o máximo possível. Se eu exagerar nos detalhes, me perdoem - é que o foco é o iniciante em Perl+CGI, assim como também fui um dia :smile:
Como começar
Sempre é bom fazer um planejamento prévio do script que se deseja produzir. É mais fácil trabalhar quando os objetivos e a "mecânica" estão claramente definidos. Pessoalmente, considero como estrutura de scripts os seguintes tópicos:
- Função do script
- Linguagem utilizada
- Fluxograma
- Cabeçalho com identificação, versão, autoria, histórico e observações
- Variáveis configuráveis pelo usuário
- Variáveis do script
- Rotinas do script, do tipo fluxograma A, fluxograma B, etc
- Subrotinas que executem funções específicas ou repetitivas, como checagem de parâmetros
1. A função deste script
A função deste script de exemplo é possibilitar ao internauta o ENVIO DE UM EMAIL a um ENDEREÇO ESPECIFICADO (no caso o webmaster do site) diretamente ATRAVÉS DA INTERNET.
2. A linguagem utilizada
A linguagem utilizada será PERL, portanto é aconselhável ter acesso a um manual desta linguagem para poder efetuar consultas.
A Aldeia oferece um tutorial de Perl que talvez possa ajudá-lo (nesta mesma seção procure pelo tutorial Perl).
3. Fluxogramas
Este script possui dois fluxogramas. No primeiro, um link de alguma página aciona o CGI. O script começa a ser executado na seguinte sequência:
- localiza o interpretador Perl no servidor
- estabelece as variáveis configuráveis
- estabelece as variáveis do script
- identifica o método de chamada (através de um link é um GET)
- fraciona as variáveis e os respectivos valores da query do GET
- produz uma página HTML com os campos de entrada (nome e email do usuário, comentários) e botão de "enviar" (formulário)
- encerra o script
O segundo fluxograma entra em ação quando o usuário fizer uso do formulário gerado pelo primeiro fluxograma, ou seja, quando preencher corretamente os campos e acionar o botão "enviar". Neste caso, o CGI é novamente acionado e o script segue uma nova sequência:
- localiza o interpretador Perl no servidor
- estabelece as variáveis configuráveis
- estabelece as variáveis do script
- identifica o método de chamada (através do formulário é um POST)
- fraciona as variáveis e os respectivos valores do POST do formulário
- checa se os campos foram preenchidos corretamente
- se NÃO, refaz o formulário indicando o ponto do erro
- encerra o script
- se SIM, envia um email ao webmaster contendo os dados do formulário
- envia um email agradecendo o usuário, confirmando o contato e o conteúdo da mensagem
- produz uma página HTML agradecendo o contato
- encerra o script
Não se preocupe se inicialmente as coisas parecem um tanto confusas. Cada uma das etapas dos fluxogramas será abordada com maiores detalhes logo adiante.
A primeira linha do script e a sua importância
Como já foi dito anteriormente nas dicas de programação, a primeira linha de todo script CGI deve ser iniciada com os caracteres #! (grade - ponto de exclamação), seguidos pelo caminho do diretório onde se encontra o interpretador Perl no servidor.
A rotina principal
Seguindo o esquema descrito logo no início, temos:
O cabeçalho
O cabeçalho contém apenas linhas de comentário que serão ignoradas pelo interpretador Perl. As linhas de contém o NOME do script, sua VERSÃO, o AUTOR, a DATA e observações consideradas importantes. Costuma-se também adicionar o histórico das versões e, eventualmente, indicações de como instalar o script no servidor.
As linhas em branco são ignoradas pelo interpretador Perl. Portanto, para obter um script "arrumado", de visual agradável e mais adequado para receber futuras manutenções e melhorias, não economize linhas em branco e linhas de comentário bem destacadas.
Este bloco de variáveis configuráveis está logo no início do script para facilitar o trabalho do usuário. Nele se encontram algumas variáveis que serão utilizadas quando o script for executado. O escopo dessas variáveis é global, pois foram definidas no corpo principal do script. Isto significa que qualquer subrotina ou função tem acesso direto a essas variáveis.
Todas as variáveis deste bloco são variáveis simples (escalares).
A variável $masterEmail contém uma string com o endereço de email para o qual deverá ser enviada a mensagem do usuário. Note que a arroba (@) é precedida por uma barra invertida (\). Essa notação é necessária para que a arroba não seja interpretada como um caractere especial.
As variáveis restantes também são do tipo string e seguem as regras normais de notação, ou seja, $nomeDaVariável="valor da variável";. Não se esqueça de iniciar o nome com o caractere $ e de terminar a atribuição com um caractere ;. Um erro muito comum é esquecer o famigerado ponto-e-vírgula que, por ser pequeno, costuma ser difícil de achar...
As variáveis $imgLogo e $imgFundo contém o nome dos arquivos que contém as imagens da logo e do fundo de página que serão incorporadas ao código HTML das páginas de formulário e de agradecimento. Caso se encontrem num diretório diferente do diretório do script, este precisa preceder o nome do gráfico ($imgLogo="/imagens/suaLogo.gif";)
A variável $urlHP indica o endereço URL da sua Home Page (não o caminho relativo) e será utilizada para produzir um link no email de agradecimento.
As variáveis do script
Apenas uma variável foi definida neste bloco, a $programaMail, que contém o caminho do serviço de email disponibilizado pelo seu provedor de serviços (servidor). Caso você desconheça o caminho, solicite a informação ao seu provedor. Geralmente os mailers são configurados em /usr/lib/sendmail, /usr/bin/sendmail ou /usr/sbin/sendmail. O parâmetro -t refere-se ao programa sendmail.
A rotina principal do script
Identificando e depurando os parâmetros recebidos
Quando o script é acionado recebendo parâmetros deve-se SEMPRE OBSERVAR MEDIDAS DE SEGURANÇA para que o processamento de parâmetros viciados seja impedido. Para evitar que comandos ou fragmentos de código sejam transferidos ao nosso script por pessoas mal intencionadas (os crackers), utilizamo-nos das expressões regulares. Estas farão as substituições necessárias "limpando" os parâmetros que serão utilizados no processamento.
A criação de uma subrotina específica para este procedimento não é necessária, porém facilita manutenções posteriores além de deixar o texto mais claro.
A subrotina criada para tal fim foi denominada pegaInput e é chamada logo no começo do script através de &pegaInput.