Vamos melhorar um pouco a aparência de nosso programa agora. O programa gerará uma página HTML desta vez, assim o “Content-type” tornar-se-á do tipo “text/html” no lugar de “text/plain”. Salve este programa com o nome hello2.c.
 

#include < stdio.h>

int main(int charc, char *charv[])
{
  printf("Content-type: text/html\n\n");
  printf("<html><head>\n");
  printf("<title>Ola, Mundo!</title>\n");
  printf("</head>");
  printf("<body><h1 align=center>Ola, Mundo!</h1>\n");
  printf("</body></html>");
  return 0;
}
 
Novamente, é preciso compilar:
 
gcc -o hello2 hello2.c
 
E copiar o programa compilado para a pasta cgi-bin do servidor web, exatamente como no programa anterior. Após a cópia, podemos digitar no browser:
http://<<endereco_IP>>/cgi-bin/hello2
 
e deverá aparecer algo semelhante a
 
 
Até o momento não fizemos nada muito interativo nem muito surpreendente. Vamos então trabalhar com envio e recebimento de valores usando o método GET?
Vamos criar um formulário simples, no qual pediremos ao usuário sua idade e retornaremos a ele qual será a idade dele no próximo ano. Antes de começarmos, precisamos saber o que é passagem de parâmetros por método GET.
A passagem de parâmetros por páginas web pode ser feita por diversos métodos, sendo dois os mais comuns: GET e POST. Enviar valores por método GET é o mais simples, contudo também é o menos seguro, pois estes são enviados na própria URL da chamada. Existe um método de codificação para estas variáveis para que o script CGI consiga obter os nomes das variáveis e seus valores, cujas regras seguem:
 
1. cada variável, inclusive seus valores, são separados entre si pelo símbolo & (e comercial)
2. o nome e o valor de cada variável são separados pelo caractere = (igual)
3. os espaços em branco existentes são substituídos pelo caractere + (mais)
4. todos os caracteres ASCII estendidos, ou seja, com valores acima de 127, são substituídos por um caractere % seguido do valor hexadecimal do caractere
5. os caracteres %, &, + e = também são convertidos em hexadecimal seguindo a mesma regra dos caracteres ASCII estendidos.
 
Um exemplo de URL para a qual passamos uma variável chamada “ano” com o valor “1981”:
http://localhost/cgi-bin/alo?ano=1981
As variáveis enviadas pelo método GET ficam em uma variável de ambiente chamada QUERY_STRING. Logo, para obtermos esse conteúdo teremos de ler essa variável de ambiente e trabalhar com a mesma.
Vamos ver como fazer com o programa que gera o formulário que mencionamos há poucos parágrafos (salve este programa com o nome idade.c):