Informática Numaboa - Tutoriais e Programação
Linguagem Perl - Acessando a CGI
Sab 22 Nov 2008 13:55 |
- Detalhes
- Categoria: Perl e CGI
- Atualização: Sábado, 22 Novembro 2008 14:41
- Autor: vovó Vicki
- Acessos: 7036
A linguagem Perl possui diretivas típicas de CGI, próprias para lidar com dados de formulários, acionar serviços do servidor como e-mail, páginas HTML, etc. Neste tutorial será mostrado como a Perl se comunica com a interface CGI para acionar estes serviços.
Obter dados de formulários
Através de código Perl pode-se obter dados de um formulário HTML através da CGI. O exemplo abaixo não é um programa completo, é apenas um módulo que pode ser inserido num script.
Este código Perl inicialmente testa se o formulário HTML usou o método GET ou o método POST e, dependendo do resultado, busca os dados. Portanto, independentemente do método utilizado pelo formulário, este código obtém os dados enviados.
Os dados são colocados na escalar $Dados. O valor de $Dados tem a aparência do fluxo de dados típica de uma transferência de dados de formulários.
Com a diretiva @CamposForm = split(/&/, $Dados);, a cadeia de caracteres $Dados é transformada numa lista. O caractere delimitador, aquele que separa os elementos do fluxo de dados, é o "e comercial" (&). Os campos do fluxo de dados do formulário são separados em campos únicos através deste caracter delimitador.
Logo a seguir, cada um dos campos da nova lista @CamposForm é tratado dentro de um loop foreach. Primeiro, cada campo é separado em dois componentes indicando-se como delimitador o sinal de igual =. Os dois componentes são atribuídos às escalares $nome e $valor. A escalar $nome recebe o mesmo valor definido na declaração name= do formulário HTML correspondente. A escalar $valor recebe o conteúdo digitado ou escolhido pelo usuário que preencheu o formulário. Supondo-se que o formulário HTML contenha um campo de entrada de dados que tenha sido definido com <input name="Apelido" size="60" maxlength="60"> e que o usuário tenha digitado "Cuca Fresca", então, para este campo do formulário, a escalar $nome terá o valor "Apelido" e a escalar $valor será igual a "Cuca Fresca".
Com os procedimentos de procura e substituição seguintes, ainda dentro da alça foreach, são retirados todos os caracteres poluidores que tenham sobrado no fluxo de dados do formulário.
Os dados do formulário, por fim, são atribuídos à lista @Form. Os elementos pares desta lista, ou seja, $Form[0], $Form[2], $Form[4], etc, contém os nomes dos campos. Os elementos ímpares, $Form[1], $Form[3]... contém os valores dos campos.
Observação: Os códigos Perl aqui apresentados são muito simples. Têm como principal tarefa esclarecer os princípios do processamento. Se você necessita de soluções mais profissionais, terá de programá-las ou então procurar scripts freeware prontos.
Enviar dados de formulário por email
Os dados de formulários preenchidos podem, por exemplo, ser gravados num arquivo do servidor. A maioria, porém, prefere receber imediatamente os dados do formulário preenchido por um usuário via e-mail.
O código Perl a seguir é a continuação do script anterior.
Este código Perl começa definindo algumas escalares. A primeira e a mais importante escalar é $ProgramaMail. Aqui é preciso indicar qual e onde o programa gerenciador de e-mails se encontra no servidor. O programa padrão é o sendmail, presente em quase todos os servidores da Internet - uma indicação típica para servidores Unix/Linux é /usr/lib/sendmail. Informe-se com o seu provedor de serviços e confirme o nome e a localização do gerenciador de e-mails colocado à sua disposição. Lembre-se, se esta diretiva não estiver absolutamente correta, o envio de e-mails não será possível.
A escalar $MailAssunto recebe o que deve constar no subj (subject) do cabeçalho do e-mail. A escalar $Destinatario deve conter o endereço para o qual o e-mail deve ser enviado.
As duas escalares $NomeRemetente e $MailRemetente foram incluídas no código apenas para completar o exemplo. Estas escalares recebem seu conteúdo do formulário. Aliás, isto só funciona se o formulário requisitante tiver campos para o nome e para o endereço de e-mail do usuário. Neste caso, é necessário indicar em $Form[#] o número correto dos elementos que correspondem a estes campos.
Após tratar as escalares, o código abre o programa gerenciador de e-mails do servidor. A opção -t na função open se refere ao programa sendmail. Caso o gerenciador seja outro, informe-se sobre a forma correta de acioná-lo para enviar e-mails.
Se o programa gerenciador não puder ser aberto, o script é interrompido com die, sem nenhum comentário. Neste ponto você pode, se quiser, adicionar uma mensagem de erro personalizada.
Através do comando print, o script escreve os dados conhecidos no cabeçalho do e-mail. Todos os e-mails da Internet têm um formato único. No cabeçalho constam diversas informações. Algumas delas são acrescentadas apenas no decorrer da viagem para o destinatário.
Dentro do loop for são escritos os diversos campos e seus respectivos valores. Os nomes dos campos e o conteúdo dos campos são separados por dois pontos.
Enviar código HTML ao navegador
Uma das tarefas mais importantes de scripts CGI é enviar código HTML ao navegador solicitante. Gerando este código através de um script pode-se incluir no código HTML valores de variáveis do script.
O código a seguir é complemento dos scripts anteriores. Ele envia um agradecimento ao usuário que tenha preenchido um formulário.
Obrigado
\n"; print "Agradecemos que tenha preenchido nosso formulário.\n"; print "Para seu controle, seguem os dados do mesmo:\n";
for($i=0;$i<=$max;$i=$i+2) {
print "$Form[$i]: $Form[$i+1]
\n";
}
print "
\n"; print "Seu nome, SeuNome\@dominio.com"; print "\n"; print "