miércoles, 1 de diciembre de 2010

CGI

Ya habia nombrado el CGI en el acceso de informacion desde la Internet (HTTP) ahora lo explicare mas a fondo:

Como ya lo habia mencionado este es un interfaz que es utilizado en los servidores web y las aplicaciones utilizadas por el mismo servidor para poder accesar, controlar, manejar valores, que sean requeridos por algun programa o usuario. este puede ser programado en cualquier lenguaje, el CGI solo describe como sera la forma en que se transmita la informacion en ambos sentido, tanto para entrada asi como salida.

La forma en que generalmente funciona un CGI es llenando un formulario con ciertos parametros que se envian al programa que corresponda para que haga lo que tiene que hacer, por lo que el primer paso es definir el campo y los tipos y el programa se ejecutara cuando los datos se envien, una ves recibidos el script de cgi hara que fucnione como deberia. el segundo paso es el envio de datos, el tercer paso es la invocacion del script, esta invocacion es hecha por  HTTP quien traspasa los datos que el cliente da, y como paso final el cgi genera un html con la tarea que el cliente pidio.
una forma esquematizada seria asi:




como mencionaba anteriormente el uso mas comun del CGI es el acceso a bases de datos ya que asi pueden accesar los datos desde su ubicacion estandar y posteriormente modificados por medio de una pagina web.Las formas en que hay comunicacion desde el navgador web con los datos de un formulario pueden ser de tipo GET o atraves de lineas de comando POST, y sin importar cual los dos van en la variable QUERY_STRING en las entradas y envios standar, tambien existen varias variables de entorno que las describire adelante:
SERVER_SOFTWARE: que se usa para saber la version del software y el nombre del servidor y el que ejecuta el programa cgi.
SERVER_NAME: este devulve el nombre de host del servidor y la IP como apareceria en las URL.
GATEWAY_INTERFACE: este devuelve la informacion de especificacion cgi con el servidor que puede trabajar.
SERVER_PROTOCOL: es el que da el nombre y revision del protocolo de donde el usuario mando la informacion.
SERVER_PORT: devuelve el numero de puerto en el cual fue enviada la peticion.
REQUEST_METHOD: Devuelve el método por el cual la peticion fue enviada. Para HTTP serán "GET", "HEAD", "POST" entre otros.
PATH_INFO: este da la información extra sobre el path, tal como es dada por el cliente. En otras palabras, podemos acceder a los scripts por su pathname virtual, seguido de alguna información extra. Esa informacion extra es enviada como PATH_INFO.
PATH_TRANSLATED: Este es al que el servidor proporciona una versión traducida del PATH_INFO, que transforma el path virtual al físico.
SCRIPT_NAME: Path virtual al script que va a ejecutar.
QUERY_STRING: La información que sigue al signo "?" en la URL que referencia al script. Es la informacion de la pregunta. No debera ser decodificada de ningún modo. Esta variable sera activada cuando hay una peticion de informacion, sin hacer caso de la decodificación de la línea de comandos.
REMOTE_HOST: El nombre de host que realiza la petición. Si el servidor no posee esta informacion activará REMOTE_ADDR y dejara esta desactivada.
REMOTE_ADDR: La direccion IP del host remoto que realiza la peticion.
AUTH_TYPE: Si el servidor soporta autentificacion de usuario , y el script esta protegido, esta es el metodo de autentificacion especifico del protocolo para validar el usuario.
REMOTE_USER: Si el servidor soporta autentificacion de usuario , y el script esta protegido, este sera el nombre de usuario con el que se ha autentificado.
REMOTE_IDENT: Si el servidor HTTP soporta autentificacion RFC 931 , entonces esta variable se activara con el nombre del usuario remoto obtenido por el servidor. Esta varible solo se utilizará durante el login.
CONTENT_TYPE: Para peticiones que tienen informacion añadida, como HTTP POST y PUT, este sera el tipo de datos contenido.
CONTENT_LENGTH: La longitud del contenido tal como es dado por el cliente.

La respuesta se envia a traves de la salida estandar, y para el caso de texto HTML como es tipicamente lo que se desea, se debe comenzar enviando el string:
Content-Type: text/htmlmas otra línea en blanco.

aqui un peqenio ejemplo de cgi para un hola mundo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main(void) 
{
 
 printf("Content-type: text/html\n\n");
 printf("<HTML><HEAD><TITLE>Hola Mundo Web</TITLE></HEAD>");
 printf("<BODY BGCOLOR=\"#FFFFFF\"><P ALIGN=CENTER>");
 
 printf("<H1>Mi Primer CGI</H1>"); 
 printf("Hola Mundo Web :D"); 

 printf("</BODY></HTML>");

}
en este caso en c
fuente: http://www.inf.udec.cl/~jlopez/DSWR/cgi.html

No hay comentarios:

Publicar un comentario