Una vez terminada la captura de datos, estos forman un registro que es enviado a un servidor http (web) que lo procesará y devolverá una respuesta (o no). Pueden utilizarse también para enviar su contenido a una dirección de correo electrónico, o que simplemente abran otra página.
Si el formulario se diseña para abrir una página o para ser enviado por e-mail, todo se reduce a escribir HTML, pero la cosa se complica cuando se trata de transacciones de datos que hay que guardar en un servidor (comercio electrónico). En este caso, en el servidor tiene que haber un programa especial, creado específicamente para ese formulario, que reciba los datos y sepa qué hacer con ellos, procesarlos y confeccionar la respuesta que remitirá al navegadorr. A esa respuesta se le denomina documento virtual ya que esa página no está escrita en ninguna parte; es generada, enviada y destruida.
A los programas que hacen de puente entre el formulario y el servidor, se les llama programas CGI (Common Gateway Interface) y no hay que confundirlos con las páginas dinámicas escritas en ASP o PHP, aunque se parecen mucho.
Los programas CGI pueden estar escritos en cualquier lenguaje de programación que sea soportado por el sistema operativo del servidor, y pueden estar diseñados para cualquier función: desde una simple captura de datos que serán guardados en un fichero, hasta la más sofisticada consulta a una base de datos.
#!/bin/sh echo Content-type: text/plain echo echo Test CGI. Se visualiza el contenido de las variables mas usuales echo echo numero de argumentos: $#. valor argumentos: "$*". echo echo SERVER_SOFTWARE = $SERVER_SOFTWARE echo SERVER_NAME = $SERVER_NAME echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE echo SERVER_PROTOCOL = $SERVER_PROTOCOL echo SERVER_PORT = $SERVER_PORT echo REQUEST_METHOD = $REQUEST_METHOD echo HTTP_ACCEPT = $HTTP_ACCEPT echo PATH_INFO = $PATH_INFO echo PATH_TRANSLATED = $PATH_TRANSLATED echo SCRIPT_NAME = $SCRIPT_NAME echo QUERY_STRING = $QUERY_STRING echo REMOTE_HOST = $REMOTE_HOST echo REMOTE_ADDR = $REMOTE_ADDR echo REMOTE_USER = $REMOTE_USER echo REMOTE_IDENT = $REMOTE_IDENT echo AUTH_TYPE = $AUTH_TYPE echo CONTENT_TYPE = $CONTENT_TYPE echo CONTENT_LENGTH = $CONTENT_LENGTH echo HTTP_USER_AGENT = $HTTP_USER_AGENT echo HOME = $HOME echo HTTP_FROM = $HTTP_FROM echo HTTP_REFERER = $HTTP_REFERER echo REFERER_URL = $REFERER_URL if [ "$CONTENT_TYPE" = "application/x-www-form-urlencoded" ]; then read lo_que_viene echo echo ESTO VIENE POR LA INPUT: echo echo $lo_que_viene exit 0 else echo NO VIENE NADA POR LA INPUT exit 0 fi
Test CGI. Se visualiza el contenido de las variables mas usuales numero de argumentos: 0. valor argumentos: . SERVER_SOFTWARE = NCSA/1.3 SERVER_NAME = miserver.midominio.mipais GATEWAY_INTERFACE = CGI/1.1 SERVER_PROTOCOL = HTTP/1.0 SERVER_PORT = 80 REQUEST_METHOD = POST HTTP_ACCEPT = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* PATH_INFO = PATH_TRANSLATED = SCRIPT_NAME = /cgi-bin/test2-cgi QUERY_STRING = REMOTE_HOST = mimaquina.misubdominio.midominio.mipais REMOTE_ADDR = 255.255.255.255 REMOTE_USER = REMOTE_IDENT = unknown AUTH_TYPE = CONTENT_TYPE = application/x-www-form-urlencoded CONTENT_LENGTH = 52 HTTP_USER_AGENT = Mozilla/2.02 (Win95; I) HOME = HTTP_FROM = HTTP_REFERER = http://sestud.uv.es/manual.esp/prueba.htm REFERER_URL = ESTO VIENE POR LA INPUT: CAMPO1=Esto+es+una&CAMPO2=demostracion+de+formularios
Fíjate que las palabras aparecen separadas por el signo + y no por espacios como hemos escrito. Si además hubiéramos escrito algún carácter especial, no se vería como tal, sino su valor en hexadecimal precedido del carácter %. Por ejemplo, el cáracter & es transferido como %26. Esta conversión se hace para no confundirlo con el separador de campos, que como puedes ver es el mismo símbolo. El signo = después del nombre del campo, también lo pone el visualizador.
Todo esto y algunas cosas más (que habrá que ver en la documentación de referencia) han de tenerse presentes a la hora de realizar programas CGI. Para terminarlo de complicar, no todos los visualizadores utilizan la misma forma de enviar los datos recibidos, por lo que se plantea a menudo la necesidad de decidir para qué visualizador queremos programar nuestro WEB.
Los programas de test, como el del ejemplo, son muy útiles cuando se están diseñando formularios, ya que permiten comprobar de forma real su funcionamiento y analizar el registro que envían, cosa imprescindible para poder programar el correspondiente CGI. Intenta hacer uno a tu medida, o simplemente copia éste, instálalo en tu servidor http, (si no tienes acceso, pide a tu administrador de sistema que lo haga), empieza a probar... y buena suerte.