Introducir un CGI en una página Web
Para introducir un CGI en un WEB es necesario usar el lenguaje HTML. Existen tres formas de hacerlo:
- Usando la etiqueta A:
<a http="direccion_del_CGI">Texto</a>
- Usando la etiqueta IMG:
<img src="direccion_del_CGI">
- Usando un formulario (este método se tratará más adelante en detalle):
<form action="direccion_del_CGI" >
<!-- Elementos del formulario -->
</form>
El primer método sólo sirve para scripts sencillos y se usó en su día para crear mapas de imágenes situados en el servidor. Hoy en día no es muy usado.
El segundo método suele servir para invocar un CGI que da como respuesta una imagen.
Un ejemplo de este tipo de uso son los contadores. En ellos, cuando el navegador llega a esta línea del código HTML pide al servidor que le mande un archivo con el nombre direccion_del_CGI. El servidor se dará cuenta que en realidad lo que debe hacer es ejecutar el programa de ese nombre. Este programa, que será un script CGI, busca en una base de datos (que puede ser más o menos complicada), cuantos accesos ha habido hasta ahora y envía al navegador la imagen adecuada. La imagen será (como habrás adivinado ya) un número correspondiente al número de visitas recibidas, incluida la tuya.
El tercer método es sin duda el más versátil y usado de todos, y en al que prestaremos mayor atención de ahora en adelante. Su función es procesar los datos provenientes de un formulario.
Un ejemplo simple
Vamos a entrar en materia creando un CGI simple, cuya función será dar la hora actual cuando el usuario lo pida.
El código HTML que se incluirá en la página será el siguiente:
<a href="http://www.unsitio.es/cgi-bin/fecha">
Dime la fecha
</a>
Cuando el navegante pulse sobre el texto Dime la fecha se enviará una petición al servidor y se ejecutará el CGI, tal y como hemos visto antes.
El programa necesario para generar la fecha es muy sencillo, así que hemos elegido como lenguaje de programación bash:
#!/bin/bash
echo Content-type: text/plain
echo
/bin/date
La primera línea simplemente dice que se debe usar el intérprete de bash para ejecutar este programa, es necesario indicarlo siempre que programemos en bash.
Las dos líneas siguientes usan el comando echo cuya función es mandar el texto a continuación por la entrada estándar. En el caso de los CGIs todo lo que vaya por la entrada estándar será recogido por el servidor Web y mandado al navegador. El estándar CGI establece que la primera línea que se envíe debe ser de la forma:
Content-type: Tipo Mime
En este caso el tipo Mime es text/plain para indicar que todo lo que vamos a enviar al navegador será texto. La línea siguiente a esta debe estar en blanco, lo que conseguimos con otra llamada al comando echo.
La última línea del programa es la que realmente realiza toda la funcionalidad. Llama al programa de Unix /bin/date que devuelve la fecha actual por la entrada estándar. Entonces es mandada al Navegador que la muestra por pantalla.