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.

Nível de vermelhos (0-255)

Nível de verdes (0-255)

Nível de azuis (0-255)

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&iacute;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&iacute;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.


recuar (cgi #01)


(c) http://arturmarques.com - 2001