| (C)ommon(G)ateway(I)nterface.
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.
Comunicar 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í la "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 (ej: en NT quizás
haya problemas para ejecutar un CGI gráfico)
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 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[rá] en Windows.
1.1 Como crear un CGI
y ponerlo en tu página
Voy a describir aquí los pasos que
uso yo para compilar, copiar y ejecutar un CGI en C y en PERL. Según
el proveedor de hosting, puede que los pasos a seguir sean diferentes
pero no deberían variar mucho. Si tienes algun problema,
consulta con tu proveedor.
1.2.1 Si usas C...
1.2.1.1 Compilando
tu CGI
Para compilar el fichero en el servidor,
hay que pedir amablemente a los proveedores de hosting que nos den
una cuenta personal en users para compilar CGIs. Una vez obtenido
el permiso, podemos seguir con el ejemplo. Tenemos el fichero 'prueba.c'
en el directorio c:\pruebas.
Contenido del fichero 'prueba.c':
#include<stdio.h>
main()
{
printf("Content-type: text/html\n\n");
printf("<html><body>¡Esto funciona!</body></html>");
}
Este fichero imprime crea una página
web en la que pone:
¡Esto funciona!
Fijaros que en un CGI lo primero que hay
que poner es la cabecera, en este caso : Content-type: text/html\n\n
El '\n' es un retorno de linea. Siempre debe de haber 2.
Ahora nos conectamos con un programa de FTP
(recomiendo el FTP Cute) al directorio que se nos ha asignado en
users.
Copiamos el fichero 'prueba.c' en formato ASCII al directorio de
users que se nos haya asignado.
Una vez copiado y sin cerrar el FTP, abrimos
el Telnet. El Telnet lo puedes encontrar en tu disco duro en C:\WINDOWS
si usas Windows 95. Una vez ejecutado, nos conectamos a users.
Después de pasar por la petición de clave, ponemos
'dir' y pulsamos return.
Si lo hemos hecho todo bien, deberíamos de ver nuestro fichero
'prueba.c' en el directorio.
Ahora tecleamos 'gcc -o prueba.cgi prueba.c -s' para compilar el
fichero.
'gcc' invoca al compilador de ficheros C
'-o prueba.cgi' le dice el nombre del fichero a crear. Si nos olvidamos
de este parámetro, obtendremos un fichero llamado 'a.out'.
Si este es el caso, podemos teclear 'mv a.out prueba.cgi' para cambiarle
el nombre.
'prueba.c' es el nombre del fichero que vamos a compilar.
'-s' indica al compilador que reduzca todo lo posible el fichero
de salida.
Después de la compilación y
si tecleamos dir, deberíamos ver 2 ficheros: 'prueba.c' y
'prueba.cgi'. Salimos del Telnet.
1.2.1.2 Copiando el
CGI a tu página
Debemos de copiar el fichero 'prueba.cgi'
al directorio de nuestra página web. Si todavía tenemos
abierta la sesión FTP sólo hay que pulsar el botón
actualizar sesión.
Ahora copiamos el fichero 'prueba.cgi' a nuestro disco duro. Podemos
cerrar después la sesión FTP.
Abrimos otra sesión FTP, esta vez
hacia el directorio de nuestra página web y copiamos el fichero
'prueba.cgi' allí.
Ya tenemos el CGI en nuestra página
web. Si ahora vamos a un navegador y tecleamos la dirección
donde se encuentra el CGI lo ejecutaremos. Ejemplo:
http://www.jet.es/gregorio/prueba.cgi
Sin embargo recibiremos un molesto error.
Tranquilos, no pasa nada. Ahora lo solucionamos.
1.2.1.3 Darle permiso
de ejecución al CGI para ejecutarlo
Los sistemas UNIX tiene activada una opción
por defecto que anula la posibilidad de ejecución de cualquier
cosa a no ser que le dado a nuestro fichero un permiso especial.
Por eso antes recibíamos el molesto mensaje de error.
Para darle permiso, se puede usar el programa
de FTP. En el caso del FTP Cute, una vez vemos el fichero al que
queremos darle el permiso de ejecución, clickeamos en el
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 de un fichero.
Ahora si ejecutamos el CGI desde nuestro
navegador, deberíamos ver el esperado mensaje "¡Esto
funciona!".
1.2.2 Si usas PERL...
1.2.2.1 Creando tu
CGI
Como el Perl no es un lenguaje compilado
como el C, nos saltaremos la ardua tarea de compilar nuestro fuente.
Simplemente, crearemos un fichero de texto llamado prueba.txt. DEBERIAMOS
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
el Wordperfect o el Works. Se supone que vamos a usar el Notepad
de Windows 95 (también sirve el EDIT del MS-DOS siempre que
no usemos carácteres españoles como los acentos o
la eñe).
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";
Fijaros que en un CGI lo primero que hay
que poner es la cabecera, en este caso : Content-type: text/html\n\n
El '\n' es un retorno de linea. Siempre debe de haber 2.
1.2.2.2 Copiando el
CGI a tu página
Debemos de copiar 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 nuestra página
web. Si ahora vamos a un navegador y tecleamos la dirección
donde se encuentra el CGI lo ejecutaremos. Ejemplo:
http://web.com/gregorio/prueba.txt
Sin embargo, veremos el fuente del fichero
como si fuese un texto normal. Tranquilos, no pasa nada. Ahora lo
solucionamos.
1.2.2.3 Solucionando
los problemas
La respuesta es sencilla: el navegador no
sabe que eso es un CGI. Pues 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.
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 FTP Cute,
una vez vemos el fichero al que queremos darle el permiso de ejecución,
pinchamos en el 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.
|