8 Formularios

1 Introducci�n

Un formulario permite el env�o de informaci�n desde el cliente hacia el servidor WEB. A trav�s de una serie de controles el usuario puede introducir informaci�n que, debidamente codificada, es enviada hacia el servidor. �ste pasa la informaci�n a un programa (denominado programa CGI) que la procesa y produce unos resultados que se env�an al servidor, que a su vez se los env�a al cliente (v�ase figura).

Funcionamiento del CGI

Un formulario se puede utilizar, por ejemplo, para:

Los formularios se crean mediante el elemento FORM. Como ejemplo, sea un formulario simple.


Caja de verificaci�n:

Men� desplegable:

Botones de radio: Opci�n 1 Opci�n 2 Opci�n 3

Campo de texto:

Recuadro de texto:

Botones de env�o y reset:


Dentro del formulario existen varios tipos de controles para recoger la informaci�n. En el ejemplo aparecen cinco de ellos: una caja de verificaci�n, unos botones de radio, un men� desplegable, un campo de texto y un recuadro de texto. Por otra parte, dos controles especiales realizan las acciones de enviar los datos al servidor o borrar los datos introducidos y restablecer los valores por defecto si los hubiera.

La URL del programa encargado de procesar los datos recogidos por el formulario se especifica mediante el atributo ACTION del elemento FORM. El programa debe encontrarse en un directorio concreto del servidor, de nombre /cgi-bin, y debe estar dise�ado de acuerdo con el formulario.

As� pues, en un formulario hay que distinguir dos partes igualmente importantes: el documento HTML con el elemento FORM y el programa CGI que procesa los datos. Veamos cada uno de ellos con m�s detalle, comenzando por el primero de ellos.


2 El elemento FORM

El elemento FORM permite crear un formulario dentro de un documento HTML. Sus atributos son los siguientes:

Dentro del elemento FORM existen varios elementos para la entrada de datos. Cada elemento de entrada tiene un nombre, dado por el atributo NAME, y un valor, dado por el atributo VALUE. Si este �ltimo atributo no est� presente se tomar� como valor del elemento el introducido por el usuario.

Igualmente, dentro del elemento FORM tambi�n pueden aparecer otros elementos como listas, encabezados, tablas, etc, para dar el formato deseado al formulario.


3 Elementos de entrada de datos de un formulario

Los elementos que se pueden utilizar para introducir datos en un formulario son los siguientes:

Elemento INPUT

INPUT especifica varios tipos de controles para la entrada de datos. El tipo se especifica con el atributo TYPE, que puede tomar los siguientes valores:

Otros atributos del elemento INPUT son los siguientes:

Elemento SELECT

SELECT muestra una lista de valores, especificados mediante el elemento OPTION, y permite seleccionar uno de ellos. Tiene el aspecto de un men� desplegable y su sintaxis es la siguiente:

    <SELECT NAME=nombre>
       <OPTION SELECTED>Opci�n 1
       <OPTION>Opci�n 2
       <OPTION>Opci�n 3
       <OPTION>Opci�n 4
       <OPTION>Opci�n 5
    </SELECT>

Atributos de SELECT:

El atributo SELECTED de OPTION indica el valor por defecto. S�lo puede haber una, a no ser que el elemento SELECT tenga el atributo MULTIPLE. El usuario puede deshacer la selecci�n por defecto. Otro atributo de OPTION es VALUE, que indica el valor asignado a la opci�n. Si no existe, se toma el propio contenido del elemento OPTION como valor.

    <SELECT MULTIPLE SIZE=3 NAME=nombre>
       <OPTION SELECTED>Opci�n 1
       <OPTION>Opci�n 2
       <OPTION>Opci�n 3
       <OPTION>Opci�n 4
       <OPTION>Opci�n 5
    </SELECT>

Elemento TEXTAREA

Permite introducir un bloque de texto a trav�s de una ventana de texto con barras de desplazamiento. El tama�o de la ventana se especifica con los atributos ROWS y COLS. El texto puede tener un tama�o ilimitado, y no pasa a la siguiente l�nea al llegar al final de la ventana, siendo necesario para ello introducir un retorno de carro manual.

    <TEXTAREA COLS=50 ROWS=5 NAME=nombre>
       El contenido inicial del elemento TEXTAREA es el
       valor inicial del texto. Puede contener c�digos
       HTML, que no son interpretados
    </TEXTAREA>

Atributos de TEXTAREA:


4 Programas CGI

Un programa CGI es un programa que se ejecuta en el servidor web y que habitualmente toma como par�metros de entrada los datos introducidos desde un formulario. Mediante programas CGI se puede ampliar de manera pr�cticamente ilimitada el tipo de operaciones que se pueden realizar desde una p�gina web.

El modo de operaci�n de un programa CGI situado en el servidor es el siguiente:

  1. El programa CGI recibe la informaci�n que le env�a el cliente web a trav�s de las variables de entorno (m�todo GET) o a trav�s de la entrada est�ndar (m�todo POST). Tambi�n es posible que un programa CGI no necesite recibir datos para cumplir su misi�n.
  2. La informaci�n se extrae y se procesa adecuadamente.
  3. El programa CGI genera un documento HTML con los resultados de la operaci�n y lo env�a de vuelta al cliente web.

El programa puede procesar �l mismo los datos recibidos, o bien pasarlos a otro programa, como por ejemplo una aplicaci�n de consulta de bases de datos; en este caso act�a como intermediario o pasarela entre el cliente web y la aplicaci�n externa (de aqu� la palabra Gateway del nombre CGI).

Un programa CGI puede estar escrito en cualquier lenguaje de alto nivel (como C, C++, Java, etc.) o lenguaje de script (como el Perl) capaz de leer datos de la entrada est�ndar, de acceder a las variables de entorno y de escribir en la salida est�ndar.

Paso de par�metros al programa CGI

Un programa CGI puede ser llamado directamente, mediante un elemento ancla de hipertexto A:

   <A HREF="programa_cgi?datos">Ejecuci�n del programa</A>

El programa recibe los datos en la variable de entorno QUERY_STRING, que contendr� todo lo que viene detr�s del s�mbolo ? en la URL (en el ejemplo, la cadena "datos").

La cadena que sigue al signo ? se codifica de acuerdo con unas reglas determinadas: los espacios en blanco se sustituyen por el s�mbolo + y los caracteres especiales se codifican en hexadecimal de la forma %xx, siendo xx el c�digo hexadecimal del car�cter. El programa CGI deber� decodificar el contenido de QUERY_STRING para obtener sus datos de entrada.

Otra posibilidad es enviar los datos de la siguiente forma:

   <A HREF="programa_cgi/datos">Ejecuci�n del programa</A>

En este caso los datos se reciben en la variable de entorno PATH_INFO, que en el ejemplo contendr� la cadena "/datos".


5 Ejecuci�n de un programa CGI desde un un formulario

Cuando el usuario pulsa el bot�n de enviar de un formulario se manda al servidor una cadena de la forma

nombre=valor&nombre=valor&nombre=valor...

donde nombre es el valor del atributo NAME de cada uno de los elementos de entrada, y valor el valor de los correspondientes atributos VALUE, o bien los datos introducidos por el usuario. El programa CGI deber� decodificar esta cadena, que se encuentra codificada seg�n las reglas expuestas anteriormente, y descomponerla para averiguar el valor asociado a cada una de las variables.

La forma en que el programa CGI accede a los datos enviados desde el formulario depende del m�todo utilizado para el env�o de los mismos. El m�todo se especifica mediante el atributo METHOD del elemento FORM, que puede tomar los dos siguientes valores:

Por ejemplo, un programa escrito en lenguaje C acceder�a a los datos enviados desde el formulario de la siguiente manera:

M�todo GET strcpy(entrada, getenv("QUERY_STRING"));
M�todo POST gets(entrada);

La p�gina resultante se env�a a trav�s de la salida est�ndar. En ella suele incluirse una cabecera para indicar el contenido del documento, que puede ser un documento HTML directamente, o bien una referencia a un documento HTML. El contenido de la cabecera es, respectivamente:

  1. Documento HTML:
    Primera l�nea: Content-type: tipo/subtipo
    Segunda l�nea: (en blanco)
  2. Referencia a un documento HTML:
    Primera l�nea: Location: URL_doc
    Segunda l�nea: (en blanco)

Donde tipo/subtipo es el tipo MIME del documento devuelto (por ejemplo, text/html o text/plain), y URL_doc es la URL del documento ya existente. En este �ltimo caso, el programa CGI no construye el documento-respuesta, sino que recupera un documento almacenado y lo env�a al cliente web.


6 Ejemplos de formularios

Ejemplo 1: Examen de HTML

Este formulario permite evaluar los conocimientos sobre una materia, en este caso el lenguaje HTML. Utiliza el programa CGI http://www.lsi.us.es/cgi-bin/exa_html

Ejemplo 2: Elecci�n de vivienda

Este formulario permite buscar una vivienda. Utiliza el programa CGI http://www.lsi.us.es/cgi-bin/mi_casa2

Ejemplo 3: Contador de visitas

Este es un t�pico contador de visitas. contador

    <IMG SRC="http://www.lsi.us.es/cgi-bin/Count.cgi?df=contador.form"
       ALT="contador">
    

En el ejemplo del contador, el documento devuelto por el programa CGI es una imagen, por lo cual la llamada al programa se realiza desde el atributo SRC de un elemento IMG. El par�metro pasado al programa, "df=contador.form", indica el nombre de un fichero de datos. Este fichero contiene un n�mero. Cuando se ejecuta el programa, se incrementa este n�mero, se construye una imagen con los iconos de los d�gitos correspondientes, y se env�a al cliente web.

Por su parte, el programa CGI http://www.lsi.us.es/cgi-bin/chequea es un simple programa de comprobaci�n de formularios. Produce como salida una lista con los valores introducidos desde el formulario. Se puede utilizar para comprobar el correcto funcionamiento de cualquier formulario que hayamos dise�ado.


P�gina principal
Internet y la WWW P�ginas web Introducci�n al HTML Im�genes Tablas
Multimedia Frames Formularios P�ginas web din�micas Dise�o eficiente de p�ginas web

Logo Universidad

Jos� Mariano Gonz�lez Romano y Juan Manuel Cordero Valle
Departamento de Lenguajes y Sistemas Inform�ticos
Universidad de Sevilla