Métodos Avanzados / Formas y CGI

Formas y CGI
(CGI and Forms)

Vamos a ver un uso bien común de escritos CGI, procesando entradas del usuario suplidas en formas. Consideraremos ejemplos de ambos programas C y Perl aplicados al problema.

Un Ejemplo bien Simple
(A Very Simple Example)

Por ejemplo, la siguiente área para entrar texto es n ejemplo bien sencillo de una forma. Un uso típico de escritos de puente es para procesar información sometida en una forma a una página de la Web. Para probarlo, escribe algún texto en el encasillado y después oprime el botón denominado "Submit Query". Entonces, debes de ver otra página que envíe la información que tu enviaste por eco. (Regresa a esta página usando la función "Back" del navegador).

Please enter some text here:

To submit the query, press this button: .

Observa que tenemos dos cosas trabajando juntas en este ejemplo. Primero, el texto es escrito en la forma; segunda, el texto es pasado a un programa que "procesa" esta información. En el presente caso el proceso es un poco trivial: la información se le regresa al cliente como un eco. Pero la escritura CGI puede ser designada a hacer mucho mas que esto con la información; veremos un ejemplo como tal en unos minutos.

La Etiqueta Form
(The Form Tag)

La forma en sí es simplemente HTML (aunque usando algunos mandatos de HTML que no hemos discutido hasta ahora). Esta forma esta hecha en una etiqueta de FORM y hay unos mandatos adicionales para producir elementos individuales en la forma (ej., encasillados para entrar texto, botones, etc.). He aquí el código que produce la forma anterior simple:

<FORM METHOD="POST" ACTION=

"http://csep10.phys.utk.edu/cgi-bin/post-query">

Please enter some text here:

<INPUT NAME="entry">

To submit the query, press this button:

<INPUT TYPE="submit"

VALUE="Submit Query">.

</FORM>

El programa que procesa la información entrada en esta forma, como quiera, NO es HTML. En este caso, el proceso esta hecho por un programa compilado C llamado post-query que reside en el subdirectorio cgi-bin del directorio guardando el software del servidor en una computadora con dirección IP de csep10.phys.utk.edu. Observa que la forma usa el valor asignado a "ACTION=" en la etiqueta para decirle al servidor que programa debe usar para entrar la información enviada desde la forma.

Mas Información sobre Construcción de Formas
(More Information on Constructing Forms)

Si estas interesado en aprender mas sobre la construcción de formas HTML, querrás empezar por consultar las formas de este Tutor , y este juego de enlaces. El material te dirá mas sobre las áreas de entradas de texto, y mostrará como usar otra elementos de formas (encasillados de marcas, botones de radio, listas desplegables, etc.). El documento anterior incluye numerosos ejemplos donde puedes practicar en el acto. Observa que mientras tu solo estés interesada(o) en diseñar formas (y no en hacer a la medida las maneras en que procesas la data entrada en las formas) puedes usar estos ejemplos como modelos para crear tus propias formas de trabajo y puedes practicar con tus creaciones con el programa post-query o en csep10.phys.utk.edo o en hoohoo.ncsa.uiuc.edu ( el cual procesa la forma del ejemplo en la dirección NCSA).

Ejemplos Mas Complejos
(More Complex Examples)

Para un ejemplo de una forma mas complicada (y mas complicado el proceso de data en una forma) esta en línea una pequeña prueba en Ciencia. Un ejemplo similar en la misma dirección presenta una formas que provee una pequeña prueba en astronomía. Si vas a la página donde está la pequeña prueba de Ciencia, y usas el navegador para hojear los recursos del documento, notarás la línea:

<form method="post"action="/cgi-bin/quizforms/galileo/qa.pl">

De esto vemos que la información entrada en esta forma es procesada por un programa llamado qa.pl (en la misma máquina que está la forma, la razón por la cual no ves un tipo de http url asignado a action= en este caso).

Este es un programa de escrito Perl el cual ha sido escrito específicamente para manejar la información sometida por esta forma. En vez de simplemente entrar el texto en forma de eco como post-query lo hace, qa.pl examina la información sometida, extrae la parte que le corresponde a la contestación de la pregunta, lo compara con la contestación correcta para la pregunta (la cual está guardada en la base de datos del servidor), y después le presenta al usuario con una de varias posibles páginas de dependiendo si la contestación correcta a la pregunta fue entrada o no. Esto ilustra que el escrito de un puente puede hacer mucho mas que simplemente enviar texto arbitrariamente como eco. Si tienes interés, aquí hay una lista del programa (program)qa.pl.