![]() |
Programación: CGI: Introducción |
Common Gateway Interface
CGI no es más que una forma de comunicar información entre un servidor de web y un
programa ejecutable nativo que está en la misma máquina que dicho servidor. Un CGI permite
pasar información en ambos sentidos (parámetros y resultados). No es un lenguaje, sólo una
forma de pasar información. Lo mismo que la línea de comandos del sistema
operativo. De ahí lo de "interfaz". Un programa CGI puede estar hecho en cualquier
cosa siempre que:
1) Se ejecute en la máquina del servidor
2) Sea capaz de leer variables de entorno y la entrada estándar del sistema operativo
(concepto cuasi universal)
3) Sea capaz de escribir en la salida estándar del sistema operativo
4) El servidor sea capaz de ejecutarlo
Para crear el CGI se puede usar Visual Basic, Perl, Rexx, Clipper, Visual C, Borland C,
Delphi, etc. Una vez creado el CGI en tu ordenador, lo pasas al servidor y lo compilas
allí. El hecho de que CGI esté universalmente soportado ayuda a que el código fuente de
un programa CGI pueda recompilarse y funcionar en cualquier entorno. No obstante, eso
dependerá mucho de qué lenguaje se use para desarrollar el programa. Por ejemplo, ISAPI sólo funciona en Windows.
Como crear un CGI usando Perl
Como Perl no es un lenguaje compilado como C, nos saltaremos la ardua tarea de
compilar nuestro código fuente. Simplemente, crearemos un fichero de texto llamado prueba.txt.
Deberíamos usar el procesador de textos más simple que tengamos a fin de que no nos
salve carácteres extra en el fichero como hacen Word y otros procesadores de texto. Se supone que
vamos a usar Notepad o WordPad de Windows.
Contenido del fichero prueba.txt:
#!/usr/bin/perl
print "content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>Aprendiendo a crear CGIs</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "Enhorabuena. Acabo de crear un CGI ¡y funciona!\n";
print "</BODY></HTML>\n";
Fíjate que en un CGI lo primero que hay que poner es la cabecera, en este caso : Content-type: text/html\n\n
El \n
al final de la cabecera es un retorno de linea. Siempre debe de haber 2.
Pasando el CGI a tu servidor
Debemos de pasar el fichero 'prueba.txt' al directorio de nuestra página web. Abrimos
una sesión FTP hacia el directorio de nuestra página web y copiamos el fichero
'prueba.txt' allí.
Ya tenemos el CGI en nuestro servidor web. Si ahora vamos a un navegador y tecleamos la
dirección donde se encuentra el CGI lo ejecutaremos. Ejemplo:
http://www.domin.io/usuario/prueba.txt
Sin embargo, veremos el código fuente del fichero como si fuese un texto normal. Tranquilos, no
pasa nada. Ahora lo solucionamos.
Solucionando los problemas
La respuesta es sencilla: el navegador no sabe que eso es un CGI. No tenemos más que
cambiar la extensión de txt por cgi. La razón de no haberlo hecho antes, es que nuestro
programa de FTP debe transferir los archivos con formato ASCII, es decir, simples ficheros
de texto, si intentamos copiar directamente el fichero con el nombre prueba.cgi, casi
seguro que no nos va a funcionar porque lo intenará transferir en formato BINARIO. Para solucionar
esto sin poner extensión txt al CGI podemos configurar nuestro programa de FTP
para que reconozca la extensión .cgi como ASCII
En los sistemas UNIX, ningún programa funciona hasta que le demos permiso de ejecución.
Para darle permiso, se puede usar el programa de FTP. En el caso del Cute FTP, una vez
vemos el fichero al que queremos darle el permiso de ejecución, pinchamos en él con el
botón derecho del ratón y seleccionamos 'File Attributes' del menú emergente.
Ahora hay que darle permiso de lectura o lectura/escritura a nuestro CGI 'prueba.cgi'.
Deberíamos recibir un mensaje advirtiéndonos que hemos cambiado los atributos del
fichero.
Si ejecutamos ahora el CGI desde nuestro navegador, deberíamos ver el esperado mensaje de
enhorabuena.
Enlaces Recomendados
![]() |
Web Viva http://www.webviva.com/ |
Biblioteca de CGIs y rutinas JavaScript. |
Tutorial basado en las "FAQ de CGI" de Grzegorz Adam Hankiewicz y cedido por Justino Martínez
Webmaster de Web Viva
http://www.webviva.com/