Neste segundo exemplo de CGI, resolveu construir-se uma forma de gerar dinamicamente uma NOVA página, que tenha um background da cor que resulte da misture RGB que venha a ser indicada.
Para isso, fez-se a "form" disponível acima, cujo HTML é:
<form method="post" action="../../cgi-bin/am_cgi_examples.exe" name="exemplo_02">
<input type="hidden" name="exemplo" value="2">
<p>Nível de vermelhos (0-255)<input type="text"
name="red" value="0"></p>
<p>N&iactue;vel de verdes (0-255)<input type="text" name="green"
value="0"></p>
<p>Nível de azuis (0-255)<input type="text" name="blue"
value="0"></p>
<input type="submit" name="activar" value="ver a
cor resultante">
</form>
Neste HTML, o que interessa reparar em, é:
- a utilização do método POST. A alternativa é o método GET, em que a informação da form seria comunicada a um programa, através de uma variável de ambiente chamada QUERY_STRING. Em POST, a informação vai por "stdin", com uma quantidade de caracteres marcada na variável de ambiente CONTENT_LENGTH;
- na form assinala-se em "action" a localização relativa do script (executável ou não) que vai processar a informação;
- esta forma só usa dois tipos de elementos: inputs textuais (tipo text) e sinalizadores de acção (tipo submit), que todos os clientes HTML mostram com os elementos gráficos "edit field" e "button", respectivamente.
Escrito o HTML que corresponde à form, o que falta fazer é escrever o código do script cores.exe.
A informação toda é enviada numa única string, que seria a seguinte, caso se usassem os valores por defeito:
red=0&green=0&blue=0
Em BNF, estas frases são assim:
<string-cgi-da-form>::=<nomes dos inputs>=<valor dos inputs>
<nomes dos inputs>::=<input>=<valor>|<input>=<valor>&<nomes dos inputs>
Com as seguintes chamadas de atenção:
- se os nomes ou valores têm espaços em branco, estes são substituidos na string por "+";
- se há caracteres para lá dos ascii 7 bits (0-127), aparecem escritos em hexadecimal, com o seguinte estilo: %valor-em-hexadecimal.
Por exemplo, se o input red se chamasse "r éd" (notar o espaço em branco), seria enviado na string CGI como r+%E9.
(c) http://arturmarques.com - 2001