Los formularios añaden una dimensión nueva a las páginas HTML, ya que éstas pueden ser más o menos sofisticadas, pero sin los formularios son de sólo lectura.
Un formulario es una interfaz gráfica de usuario, GUI, que permite la inclusión de botones de diferentes tipos, areas de texto, listas de selección, etc. Cuando se escribe un elemento del formulario, cada uno de ellos tiene un par de atributos: NAME y VALUE, de modo que cuando el usuario pone información en ese elemento del formulario, esa información se asocia al nombre del elemento. Los elementos pueden tener valores iniciales.
Cuando el usuario presiona un botón indicando que el formulario debe
ser enviado, submitted, la información en el formulario es
mandada al servidor para ser procesada por un script CGI.
Los datos se envian como pares
nombre=valor, separados por ampersands, , donde nombre es el dado en el atributo NAME y el valor es el
dado en el atributo VALUE o el dado por el usuario. Cada par
nombre=valor se codifica según el modo URL, esto es, los
espacios en blanco se sustituyen por mases,
, y los caracteres no
alfanuméricos son sustituidos por sus códigos hexadecimales,
.
En el siguiente ejemplo se puede ver el caso de la codificación URL de
la información obtenida en un formulario en el que se han introducido
el nombre y los apellidos del usuario Pepe Pérez Pardo:
nombre=Pepe&apellidos=P%e9rez+Pardo
La primera parte del procesamiento de la información del formulario por parte del script CGI será romper la secuencia de datos en por los ampersands, y luego cada par nombre=valor deberá ser decodificado. En C, lo más habitual es colocar cada par nombre=valor como elementos de un par de arrays paralelos de cadenas de caracteres.