Introducción a los CGIs

Esta es la funci�n m�s com�n para los CGIs hoy en d�a. Llamar a un CGI directamente desde un enlace, como hemos hecho hasta ahora, s�lo permite pasarle unos par�metros fijados al escribir el c�digo HTML de la p�gina. Los formularios permiten que el navegante introduzca toda clase de informaci�n, que sea mandada al servidor y procesada por el CGI. Los programas usados son los mismos que hemos visto hasta ahora.

C�mo ya vimos al hablar de formularios, la forma de indicar la direcci�n del programa CGI que debe procesar la informaci�n se indica en el atributo ACTION:

<form action="cgi-bin/procesaform">
</form>

Cuando el usuario pulse al bot�n de env�o del formulario el navegador llamar� al CGI y mandar� con la llamada toda la informaci�n que se haya introducida. Esta informaci�n estar� codificada en pares nombre_campo/valor. Adem�s la informaci�n sufrir� una codificaci�n especial, siguiendo las siguientes normas:

  • Cada par nombre_campo/valor est� separado por un ampersand: &
  • Los valores est�n del nombre del campo por el signo igual: =
  • Todos los caracteres especiales, es decir, aquellos que no pertenezcan al ASCII de 7 bits ser�n codificados con tres s�mbolos: Un signo de porcentaje y un valor hexadecimal de dos d�gitos indicando su n�mero de ASCII extendido: %NN

    Tambi�n ser�n enviados de esta manera los caracteres especiales, incluyendo &, = y % para no confundir cuando se usan como datos y cuando se usan como car�cter de control.

  • Por �ltimo todos los espacios se codifican con el signo +.

Debido a esta codificaci�n lo primero que debe hacer todo CGI ser� llevar a cabo una decodificaci�n.

.�GET y POST

Los dos m�todos para mandar la informaci�n asociada a un formulario son GET y POST. Cual usar� el navegador se indicar� en el c�digo HTML con el atributo METHOD.

Si usamos GET todos los datos se almacenar�n en la variable de entorno QUERY_STRING, y el programa CGI debe leerlos de ah�. El problema es que esta variable suele tener una longitud limitada. En ocasiones esta limitaci�n es de 256 caracteres, lo que limita su uso a formularios muy sencillos. Cabe decir que en los casos de la secci�n anterior en los que invoc�bamos a un CGI con la etiqueta A, est�bamos usando este m�todo.

Si usamos POST el CGI recibir� los datos por la entrada est�ndar, y por tanto no hay limitaci�n en el tama�o de los mismos. Si es necesario conocer dicho tama�o para procesar los datos puede obtenerse leyendo la variable de entorno CONTENT_LENGTH. �ste es el m�todo m�s seguro de usar y por tanto el m�s utilizado.

.�Variables de un CGI

Como hemos visto, es habitual que un CGI deje informaci�n en una variable de entorno. Existen una serie de variables extra donde se almacena informaci�n de gran utilidad, como la direcci�n IP del navegante, el navegador que usa, etc. Las m�s importantes est�n resumidas en la siguiente tabla:

Variable Significado
SERVER_NAME Direcci�n IP del host donde est� el CGI.
SERVER_SOFTWARE Tipo de servidor Web que se est� usando.
GATEWAY_INTERFACE Versi�n del interfaz CGI.
SERVER_PROTOCOL Versi�n del protocolo HTTP.
SERVER_PORT El puerto TCP que se est� usando. En la mayor�a de servidores Web es el 80.
REQUEST_METHOD M�todo de env�o de informaci�n: POST o GET.
HTTP_ACCEPT Lista de los tipos MIME (content-types) que acepta el navegador.
HTTP_USER_AGENT El navegador usado por el usuario.
HTTP_REFERER Direcci�n URL del documento HTML donde estaba el formulario.
PATH_INFO Informaci�n extra (visto antes)
PATH_TRANSLATED La variable PATH_INFO adaptada al sistema espec�fico donde est� el CGI.
SCRIPT_NAME Nombre del CGI.
QUERY_STRING Argumentos pasado al CGI.
REMOTE_HOST Nombre del ordenador que envi� los datos.
REMOTE_ADDR Direcci�n IP de dicho ordenador.
REMOTE_USER Nombre del usuario.
REMOTE_IDENT Sirve para el m�todo de identificaci�n ident.
CONTENT_TYPE Tipo de informaci�n que llega por la entrada est�ndar. Por defecto ser�: x-www-form-urlencoded que es la codificaci�n que hemos visto antes.
CONTENT_LENGTH Longitud de los datos que llegan por la entrada est�ndar cuando hemos usado POST.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP