20 November 2000 - previous November updates: 03 05 07 09 10 13 15 17 20 ; previous updates
1 - CGI Tutorial #01 (parte 1 / 3)
|
Este mini-tutorial CGI utiliza um formulário com 4 tipo de entidades; esta primeira diz-se um "textfield".
Checkboxes. As checkboxes são tais, que apenas as assinaladas serão enviadas pelo browser ao programa CGI. |
CGI Tutorial #01 (parte 1 / 3) Ficam hoje disponíveis os ficheiros que vão contribuir para o primeiro tutorial para autoria de software CGI, em linguagem C. CGI significa «common gateway interface» e representa uma interface entre clientes e servidores web, que pode ser utilizada para aumentar a funcionalidade do servidor. Por exemplo, por defeito, um servidor de hipertexto, pelo protocolo http, não sabe se não servir páginas HTML a quem as pedir; tarefas tão comummente necessárias, como o processamento de um formulário, exigem um processamento extra que terá de ser acrescentado. Programas CGI são programas que funcionam do lado do servidor e não do lado cliente. São programas que, invariavelmente, terão que começar por entender que informação lhes está a ser enviada. Um browser de Internet pode comunicar informação a um programa CGI, de uma de duas maneiras: ou por um método conhecido por "GET", ou por um método conhecido por "POST". Em ambos os casos, a comunicação vai ser possível graças à existência de «variáveis de ambiente», que estão à disposição do programa CGI, no contexto do servidor que o executa. Eventualmente, o leitor já terá experiência de «variáveis de ambiente» noutros contextos, como na linha de comandos do seu sistema operativo. Por exemplo, a maior parte dos sistemas operativos com «linha de comandos», mantêm uma variável de nome PATH, que indica os caminhos onde deverão ser procurados os ficheiros executáveis, quando se invoca qualquer coisa que não está disponível na directoria corrente. Em CGI é exactamente a mesma situação: existem nomes (as variáveis), que referem informação valiosíssima para se processar o input, proveniente de um formulário. No método GET, são vitais duas variáveis: CONTENT_LENGTH - que diz quantos caracteres estão a ser enviados; QUERY_STRING - que diz quais os caracteres que estão a ser enviados; No método POST, só é imprescindível dar atenção a: CONTENT_LENGTH - que diz quantos caracteres estão a ser enviados; uma vez que os caracteres propriamente ditos, chegarão pelo "standard input", uma stream que em linguagem C é conhecida por stdin. O método POST é preferível, pois normalmente os sistemas operativos têm um limite de memória para as variáveis de ambiente, pelo que uma QUERY_STRING (usada em GET) nunca poderá representar quantidades de caracteres acima desse valor. Lendo a informação por stdin, como se estivesse a chegar por um teclado, liberta o servidor dessa limitação. O formato da string enviada é basicamente o seguinte: - quando na origem há espaços em branco, os mesmos são enviados como sendo o caracter '+'; - os campos do formulário, são enviados no estilo "nome=valor"; - caracteres não alfabéticos são substituidos pela sequência %xy, em que xy são a representação hexadecimal ASCII do caracter. Por exemplo, num formulário com os campos: campo_texto (uma área para escrever texto) contendo a frase "Artur"; cbx_noticias (uma checkbox assinalada); rb_cor (um botão de rádio a assinalar "Vermelho" como sendo a côr escolhida); ... preenchido conforme mostram as figuras... o browser produzirá a seguinte frase: campo_texto=Artur&cbx_noticias=checkbox&rb_cor=red&submit=enviar que tratará de enviar ao programa CGI, que deverá ser capaz de a memorizar e processar. As forms e código a serem utilizados no tutorial estão disponíveis num ficheiro [ZIP de 72 KB], contendo o código C de funções capazes de fazer a aceitação de qualquer form, por POST e GET; binários CGI para win32; e forms capazes de comunicar com os binários CGI, desde que esteja disponível um servidor, claro. A explicação do código far-se-á na próxima actualização. |
RadioButtons. Em forms têm todos que ter o mesmo nome interno, caso queiramos que a escolha seja mutuamente exclusiva.
O próprio botão de enviar é um elemento que pode ser comunicado pelo browser, sendo um elemento "submit". |