(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.
|