3308 registros
0 hoje
12 nesta semana
45 neste mês![]() | 73% | Brasil (49333) |
![]() | 5% | Portugal (3192) |
![]() | 3% | EUA (2227) |
![]() | 0% | Rússia (264) |
![]() | 0% | Holanda (240) |
| Hoje: | 132 |
| Ontem: | 2619 |
| No mês: | 41928 |
| Mês passado: | 25815 |
| Total: | 67743 |
| Recorde: | 3037 |
| No dia: | 04.03.10 |
| Leituras hoje: | 20967 |
| Leituras Total: | 290395 |
| Bots hoje: | 45 |
| Dados desde: | 16.02.2010 |
|
Seg 17 Nov 2008 20:07 |
|
Chamando a CGI através de HTMLCGI e HTML comunicam-se nos dois sentidos: por um lado, é possível chamar um script CGI através de uma página HTML que esteja ativa no seu monitor; por outro, um script CGI pode gerar código HTML e enviá-lo ao seu navegador, o qual mostrará a página correspondente no seu monitor. Um script CGI pode processar dados que sejam enviados juntamente com uma chamada de uma página HTML. Por exemplo, um script CGI pode fazer uma pesquisa num banco de dados utilizando os dados que receber de um formulário de uma página HTML. O resultado do processamento dos dados pode ser enviado por um script CGI ao navegador na forma de código HTML. Dessa forma, o script que fez uma pesquisa num banco de dados pode enviar o resultado ao navegador, através de código HTML dinamicamente gerado. Um script CGI também pode armazenar e ler dados num servidor. É assim que funcionam livros de visita ou fórums. Um usuário pode digitar dados num formulário de página HTML. Ao enviar o formulário, o script CGI é chamado e armazena os dados enviados. Um segundo script CGI ou outra chamada ao mesmo script pode gerar um código HTML contendo as entradas gravadas e enviá-lo para um navegador. Um script CGI pode ser chamado por um arquivo HTML de diversas maneiras:
Exemplo de troca de dados entre CGI e HTMLO exemplo seguinte realiza um procedimento CGI simples que esclarece a troca de dados entre CGI e HTML: num arquivo HTML o usuário pode preencher seu nome e digitar um comentário num formulário. Quando o formulário é enviado, o programa CGI comentario.pl é chamado. Este script está escrito em PERL. Ele recebe os dados do formulário, separa suas porções e gera um página HTML completa que contém os dados recebidos. O navegador mostra no monitor este código HTML gerado pelo script. Estude este exemplo com calma e não se preocupe demasiadamente com o código PERL do programa: Página HTML com o formulário<html> <head> <title>Página de Comentários</title> </head> <body> <h1>Seu comentário</h1> <form action="/cgi-bin/comentario.pl" method="post"> Nome: <input size="40" maxlength="40" name="NomeUsu"> Texto: <textarea rows="5" cols="70" name="ComentaUsu" wrap=virtual> </textarea> <input type="submit" value="Enviar"> </form> </body> </html> O formulário explicadoForam definidos dois campos de entrada de dados no formulário do arquivo HTML. O primeiro (<input size="40" maxlength="40" name="NomeUsu">) é um campo de uma linha no qual o usuário deve digitar seu nome. O segundo (<textarea rows="5" cols="70" name="ComentaUsu" wrap=virtual>) é uma área de entrada de dados de linhas múltiplas onde o usuário pode digitar seu comentário. Ao clicar no botão Enviar (<input type="submit" value="Enviar">), o formulário é enviado. O tratamento que deve ser dado ao formulário está indicado na tag introdutória: com o comando action="/cgi-bin/comentario.pl" é chamado o script CGI que deve processar os dados enviados. Os dados são encaminhados através de method="post". Isto significa que o script recebe os dados como parâmetros de entrada padrão (STanDart INput = STDIN). É como se você chamasse para execução, no seu computador local, um programa com um parâmetro. Script CGI comentario.pl#!/usr/bin/perl read(STDIN, $Dados, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n\n"; print "<html><head><title>Resposta CGI</title></head>\n"; print "<body><h1>Resposta CGI do programa comentario.pl\n"; @CamposForm = split(/&/, $Dados); foreach $Campo (@CamposForm) { ($nome, $valor) = split(/=/, $Campo); $valor =~ tr/+/ /; $valor =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $valor =~ s/<!--(.|\n) *-->//g; $Form{$nome} = $nome; $Form{$valor} = $valor; print "$Form{$nome} = $Form{$valor}", " \n"; } print "</body></html>\n"; O script explicadoO script PERL comentario.pl, localizado no diretório apropriado do servidor web, recebe os dados como parâmetros de entrada padrão (standart input) através do comando read(STDIN, $Dados, $ENV{'CONTENT_LENGTH'});. Logo em seguida, o programa começa a gerar uma página HTML que é enviada de volta ao navegador. Para isso são utilizados comandos print, que constroem um arquivo HTML com os elementos necessários. A geração da página HTML é interrompida pela diretiva @FormCampos = split(/&/, $Dados);. A função split separa cada par de parâmetros enviados (nome e valor) e os armazena no array (matriz) @FormCampos. A seguir, a alça ( loop) foreach processa cada um dos pares de dados. Os comandos estranhos e intimidadores que se seguem servem para transformar os dados recebidos em texto legível. Isto porque os dados recebidos pelo script são codificados de acordo com uma determinada convenção - a Mime-Type application/x-www-form-urlencoded. Neste tipo de codificação, os espaços e os caracteres especiais são enviados como valores hexadecimais. Após a decodificação, o script apresenta os dados de cada campo do formulário (nós ainda estamos dentro do processo de geração de código HTML que está sendo enviado ao navegador). Após terminar a alça foreach, o script envia os elementos necessários para fechar a página HTML. Do ponto de vista do usuário, a página que continha o formulário desaparece do monitor. No seu lugar, aparece uma nova página que contém o código HTML gerado por comentario.pl. ObservaçõesO exemplo acima serve apenas como exemplo de troca de informações entre HTML e CGI. Se você ainda não teve contato com a linguagem PERL e achou o código do script totalmente incompreensível... não se preocupe, é normal. PERL é uma linguagem muito poderosa, porém um tanto temperamental. À medida que os tutoriais avançarem, você vai conhecer mais desta linguagem. Neste ponto, o mais importante é conhecer as variáveis de contexto da CGI, explicadas no módulo Tutorial CGI - Variáveis de Contexto. |
| Última atualização ( Seg, 17.11.2008 20:52 ) |