A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Tutorial CGI - GET e POST

Seg

17

Nov

2008


22:16

(3 votos, média 1.33 de 5) 


O HyperText Transfer Protocol (Protocolo de Transferência de Hipertexto - HTTP) é o protocolo de comunicação utilizado para a troca de dados entre um navegador e um servidor web. É o protocolo de comunicação que você aciona quando digita um endereço no seu navegador: http://www...
Existem vários métodos HTTP. Dois deles estão associados à transferência de dados de formulários e são muito importantes: o método GET e o método POST.

O método GET

GET, um dos métodos do HTTP, é acionado por meio de um formulário HTML através da diretiva method="get" incluída na tag <form>. Por meio deste método, os dados constantes no formulário são primeiramente transmitidos ao software servidor e este, por sua vez, armazena os dados temporariamente numa variável de contexto denominada QUERY_STRING.

Um script CGI, chamado através da diretiva action= incluída na tag inicial do formulário, precisa extrair os dados dessa variável de contexto para poder obter os dados que lhe foram enviados (veja em Tutorial CGI - Variáveis de Contexto). Usando PERL, por exemplo, é possível extrair esses dados com $dados_form = $ENV{'QUERY_STRING'};.

Quando um formulário HTML utiliza o método GET, o fluxo de dados é separado do endereço URL que chama a CGI através de um ponto de interrogação (?). Esta forma de endereçamento e separação pode ser observada no campo de endereços do navegador do usuário, logo após o formulário ter sido enviado. Você verá algo como http://www.meusite.com/meuscript.cgi?nome=Maria&id=123

O método POST

POST, também um método do HTTP, é acionado por meio de um formulário HTML através da diretiva method="post" incluída na tag <form>.

Este método faz com que os dados do formulário sejam diretamente transmitidos ao endereço que constar da diretiva action=. Um script CGI, chamado por action=, precisa extrair os dados através da entrada padrão (standart input) para poder obter os dados transmitidos pelo formulário. Pode-se, por exemplo, usar PERL e indicar read(STDIN, $Dados, $ENV{'CONTENT_LENGTH'});.

Observe que o programa precisa obter o valor da variável de contexto CONTENT_LENGTH para saber quantos caracteres precisam ser lidos através da entrada padrão. Isto é necessário porque não existe um caracter separador no fluxo de dados.

A importância de se conhecer o método

Se você quiser fazer uso de um script CGI pronto, precisa saber por qual dos dois métodos o script espera receber dados. Normalmente isto vem documentado pelo autor do script. Alguns scripts mais inteligentes testam ambos os métodos - neste caso, não importa o método de transferência de dados que você usar no formulário - ambos vão funcionar.

Se você for escrever seus próprios scripts, lembre-se de determinar o método que deve ser utilizado no formulário. Ou programe de maneira inteligente: deixe o script preparado para ambos.

Fluxo de dados na transmissão de dados de formulários

Um formulário HTML típico é composto por campos nominados (p.ex. para nome, endereço e comentário). Na transmissão do formulário preenchido para o servidor web / programa CGI, os dados precisam ser transmitidos de tal forma que o script CGI seja capaz de identificar os campos do formulário e os valores dos mesmos. É por isso que existe um método de codificação específico que separa os campos do formulário dos seus respectivos valores. Este método de codificação baseia-se nas seguintes regras:

  • Cada um dos elementos do formulário, inclusive seus valores, são separados entre si pelo símbolo & ("e" comercial ou ampersand).
  • O nome e o valor (dado) de um elemento do formulário são separados por = (sinal de igual).
  • Espaços em branco existentes nos dados (p.ex. várias palavras) são substituídos por + (sinal de adição).
  • Todos os caracteres ASCII estendidos, com valores de 128 a 255 (hexadecimal 80 até FF), são substituídos por um conjunto constituído pelo sinal de % (porcento) seguido do valor hexadecimal do caracter (p.ex. o nosso ç (c cedilha) é substituído por %E7).
  • Todos os caracteres utilizados nestas regras como delimitadores (ou seja, &, +, = e %) também são convertidos em hexadecimal seguindo a mesma regra para os caracteres ASCII estendidos.

Exemplo de Formulário

O exemplo a seguir mostra inicialmente o texto fonte de um formulário HTML e, logo abaixo, um gráfico mostrando como o formulário aparece num navegador. Logo abaixo do gráfico você poderá observar os dados codificados para a transmissão.

      Nome:   
      e-mail: 
      Texto:  
      
   
Formulário
NomeUsuario=Spider&MailUsuario= O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo. & Texto=Isto+%E9+um+exemplo+de+coment%E1rio

Finalmentes

Bem, pessoal, é isto o que tenho para contar sobre a CGI. Se você leu todos os textos da série e aproveitou a leitura, valeu biggrin

mfx brokerалюминиевые кастрюлиооо полигон киевалександр лобановскийсамый лучшийалександр лобановскийbroker mfx

Informações adicionais