El CGI (Common Gateway Interface) es un estándar para comunicar
aplicaciones externas con los servidores de información, tales como
servidores HTTP o Web. Cuando un navegador lee un documento HTML la información
es estática, como un libro, no puede modificarse, solo leerse. Pero
un programa CGI al ser ejecutado por el navegador puede generar información
dinámica y crear HTML en tiempo real, o muchas más opciones,
casi ilimitadas.
Los CGI son usados por todos los servidores Web. Un ejemplo son los
buscadores, como Ole o Yahoo, programas que buscan lo que tú pides,
mediante un CGI. La gestión de passwords para acceder a sitios específicos
la hacen los programas CGI. Los libros de visitas, los contadores de visitas,
programas que muestran la hora, formularios para enviar datos por la red,
etc... Todo eso y mucho más, lo gestionan programas CGI.
Otro ejemplo de lo que pueden hacer podría ser éste: supongamos
que quieres enganchar tu base de datos sobre libros de Unix al WWW, para
permitir a gente de todo el mundo consultarla. Básicamente se necesitará
un programa CGI que el navegador (o más específicamente el
daemon del Web) ejecutará para transmitir la información
al gestor de base de datos, y recibir los resultados para presentárselos
al cliente como HTML. Este es un ejemplo de pasarela (gateway).
El ejemplo de la base de datos es una idea sencilla, pero la mayoría
de las veces difícil de implementar. Realmente no hay límite
con lo que tu quieras enganchar al Web. La única cosa que debes
recordar es que haga lo que haga tu programa CGI, no deberá tardar
mucho tiempo en procesarlo porque puede ser que sea tan complejo, y lento,
que parezca que nunca termine de ejecutarse el archivo CGI.
Explicaciones
Como un programa CGI es un ejecutable, es equivalente a dejar al mundo
ejecutar un programa en tu sistema, que no es lo mas seguro a hacer. Por
ello existen una serie de precauciones de seguridad que son necesarias
de implementar cuando se usan programas CGI. Probablemente la que afectará
al usuario típico del Web, es el hecho de que los programas CGI
necesitan residir en un directorio especial, así el servidor sabe
que tiene que ejecutarlo, en vez de simplemente mostrarlo por pantalla.
Este directorio está generalmente bajo el control del webmaster,
prohibiendo al usuario medio crear programas CGI. Hay otros métodos
para permitir el accesos a scripts CGI, pero depende del webmaster que
se te de esta posibilidad. Así que deberás contactar con
tu webmaster para consultar la factibilidad de permitirte un acceso a los
CGI. Si dispones de una versión del servidor HTTPd NCSA, verás
un directorio denominado /cgi-bin. Este es el directorio especial antes
mencionado, donde todos los programas CGI residen.
Un programa CGI se puede escribir en cualquier lenguaje que permita
ser ejecutado en el sistema, como:
C/C++
Fortran
PERL
TCL
Algún Shell de Unix
Visual Basic
AppleScript
Delphi
Simplemente depende de lo que tengas en tu sistema. Si usas un lenguaje
de programación como C o Fortran, como ya sabrás, debes compilar
el programa antes de poder ejecutarlo. Si miras en el directorio /cgi-src,
encontrarás el código fuente de algunos programas CGI del
directorio /cgi-bin. Pero, si usas alguno de los lenguajes interpretados,
como PERL, TCL, o un shell de Unix, el script simplemente necesita residir
en el directorio /cgi-bin, ya que no tiene un código fuente asociado.
Mucha gente prefiere escribir scripts CGI en vez de programas, ya que son
más fáciles de depurar, modificar y mantener que un programa
típico compilado. En éste curso vamos a hablar de lo
que, a mi parecer, es la forma más sencilla de crear scripts CGI,
el PERL en su versión 5. Podrás conseguirlo en http://www.ActiveWare.com
aunque, como verás, puede que no lo necesites obligatoriamente,
a no ser que quieras probar tus scripts en casa. El PERL es necesario solo
para ejecutar los scripts, pero no para crearlos. Puedes ver si lo tienes
ya instalado si escribes en la linea de comandos perl -v. Puede
que tu empresa, universidad, o simplemente tu sistema, ya lo tengan funcionando.
De todas formas, no te preocupes al oír eso de lenguajes de programación
y PERL y cosas de éstas. En éste cursillo voy a explicar
cómo crear scripts CGI sin grandes complicaciones.
¿Dónde debe ir un script CGI?
Se supone que debe ir en un directorio llamado cgi-bin. Éste
es un directorio especial, que contiene los scripts, configurado dentro
del servidor HTTP. El servidor conoce que este directorio contiene ejecutables
que deberán ser ejecutados y su salida deberá ser enviada
al navegador del cliente. No se puede simplemente crear un directorio cgi-bin,
el administrador del servidor deberá configurarlo para su uso. Si
no está configurado, los scrips serán cargados como simples
ficheros de texto.
Algunos servidores están configurados de tal manera que los ficheros
con una determinada extensión (generalmente .cgi) son reconocidos
como scripts y serán ejecutados como si estuvieran en un directorio
cgi-bin sin importar el directorio donde se encuantran. De hecho, la mayoría
de servidores de páginas personales lo tienen configurado así.
Te recomiendo que hables con el responsable de tu servidor para informarte
de ello.
¿Solo se usa el Perl o hay también HTML?
Cuando tenemos un script CGI no basta con cargarlo. Debe recibir una serie
de datos, como una palabra a buscar o unos comentarios para enviar por
e-mail. Es necesario que un código HTML de la web le proporcione
dichos datos. Por esto, un script CGI constará de dos partes: el
script y un formulario HTML para recogida de datos.
El script CGI puede crear documentos HTML de forma automática
y presentárselos al navegador, así que también posee
HTML un script escrito en PERL.
Como ves, hay un poco de todo.
¿Qué necesito para seguir éste cursillo?
Pues solo necesitas tres cosas. Una de ellas es el PERL, aunque ya he explicado
que es opcional. De todas formas puedes ir a http://www.ActiveWare.com
y bajártelo, creo que ocupa 1.3 Megas y hay dos versiones, una para
Unix y otra para MS-DOS/Windows. Para no tener que hacer otro curso de
programación en PERL vamos a usar una librería CGI. Te preguntarás,
¿qué es eso? Pues una amable persona decidió crear
un archivo en PERL con las opciones más útiles para usar
en el Web. De esta forma solo tendremos que crear una pequeñísima
parte del script y aprovechar lo que ya hay hecho. Vamos a usar la librería
de Steve Brenner, que podrás obtener pulsando aquí.
El fichero se llama cgi-bin.pl y ya explicaré cómo usarlo
a su tiempo. Lo último que necesitas es un poco de práctica
con ésto de crear script CGI. Te aseguro que es muy sencillo y te
permitirá tener infinitas posibilidades con tu Web.