O envio de dados para um script CGI é feito através de um formulário HTML.
Os formulários HTML são criados usando a tag <FORM> contendo botões, campos, listas e/ou caixas de seleção identificadas através de nomes associados a valores, função de entrada dos usuários e um botão de envio do formulário, que enviará o conjunto das informações para o script indicado como atributo Action da tag FORM , dependendo do método GET ou POST. Cada elemento do formulário deve ter um nome próprio, para que o valor associado ao elemento forme, com o nome do mesmo, um par nome/valor do tipo:
Nome_do_elemento=valor
Todos os pares nome/valor são separados por sinais tironianos (o caractere "&"). Assim, o envio de um formulário cria uma string assim:
campo1=valor1&campo2=valor2&campo3=valor3
O envio desta cadeia será diferente, dependendo se o método usado para enviar o formulário é GET ou POST.
O método GET permite enviar os elementos do formulário através do URL do script, acrescentando o conjunto de pares nome/valor ao URL do script, separado por um ponto de interrogação, o que dá um URL do tipo:
http://nome_do_servidor/cgi-bin/script.cgi?campo1=valor1&campo2=valor2...</code>
No entanto, o comprimento da string URL é limitado a 255 caracteres, as informações situadas além deste limite ser perdidas, irremediavelmente. Além disso, isto cria um URL sobrecarregado na barra de endereço de um navegador e pode revelar informações sensíveis, como uma senha...
Assim, o método POST é uma boa alternativa para o método GET. Este método codifica as informações da mesma forma que o método GET (codificação URL
e pares nome/valor), mas ele envia os dados depois dos cabeçalhos HTTP, em um campo chamado corpo da pesquisa. Desta forma, a quantidade de dados enviados não é mais limitada, e é conhecida pelo servidor graças ao cabeçalho, que permite conhecer o corpo da pesquisa.