Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

CGI – Interfaz de pasarela común




Enviado por Pablo Turmero



    Monografias.com

    Índice
    Introducción
    Cómo funciona
    Independencia
    Escribiendo un programa CGI.
    Variables de entorno.
    Establecimiento de la comunicación con el cliente
    Referenciar un CGI
    Los formularios y CGI
    Envío de información del servidor al CGI

    Monografias.com

    Introducción a CGI
    SubEs de las primeras formas de programación web dinámica.

    El CGI cambio la forma de manipular información en el web. Antes: relación cliente-servidor mediante plugins y limitada por la velocidad.

    Es un método para la transmisión de información hacia un compilador instalado en el servidor.

    Monografias.com

    Introducción a CGI
    SubFUNCIÓN PRINCIPAL: Añadir una mayor interacción a los documentos web (devuelve información dinámica) que por medio del HTML (se presentan de forma estática).

    Corre en el servidor ? No depende del usuario.

    Uso: contadores, bases de datos, motores de búsqueda, formularios, generadores de email automático, foros de discusión, chats, comercio electrónico, rotadores y mapas de imágenes, juegos en línea y otros.

    Monografias.com

    Introducción a CGI
    El procesamiento puede hacerlo totalmente el CGI (Procesamiento Directo).
    El CGI sirve de puente para otro programa con otro propósito (Procesamiento Indirecto).

    Monografias.com

    Como funciona
    Funcionalidad de las paginas web que contengan programación CGI:
    Acción conjunta del Servidor Web y el programa almacenado (script CGI).

    Script CGI: Programa que se ejecuta en el servidor en respuesta a una solicitud del usuario.

    Lenguajes de programación: Basic, Java, C, Perl…
    Deben leer los datos de la entrada estándar
    Acceder a las variables de entorno
    Escribir en la salida estándar.

    Monografias.com

    Independencia
    Independiente de:
    Hardware
    Software y SO.
    Servidor
    No asume rutas
    No asume IPs
    No asume permisos.

    Monografias.com

    Escribiendo un programa CGI
    Entrada estándar: stdin.

    Salida estándar: stdout.

    Se puede generar cualquier tipo de documento.

    Toda salida del programa CGI debe estar precedida por una cabecera tipo MIME

    Salida en formato visualizable por el navegador (no siempre).

    Monografias.com

    Escribiendo un programa CGI
    #include < stdio.h>

    Int main(int argc, char *argv[])
    {
    printf(“Content-type:texyt/htmln”);
    printf(n”);
    printf(“< HTML>n< BODY>n”);
    printf(“Mi primer CGIn”);
    printf(“< /HTML>n< /BODY>n”);
    return 0;
    }
    Cabecera
    Línea
    Separación
    Cuerpo

    Monografias.com

    Escribiendo un programa CGI
    #include < stdio.h>
    Int main(int argc, char *argv[])
    {
    //…
    printf(“Location: http://www.ua.esn”);
    printf(n”);
    //…
    return 0;
    }
    Link a otra pagina web:

    Monografias.com

    VARIABLE DE ENTORNO CGI
    Transmiten datos acerca de una petición de un servidor al CGI.
    Variable sin valor o sin definir=NULL.
    Existen de 3 tipos:
    Especificas de servidor
    Especificas de cliente
    Especificas de la petición

    Monografias.com

    VARIABLE DE ENTORNO CGI: Especificas del servidor

    Características del servidor:
    GATEWAY_INTERFACE. -versión del servidor (ej: CGI/1.1)
    SERVER_NAME. -Nombre del servidor (ej: www.ua.es)
    SERVER_PORT. -Puerto del servidor donde se recibió la petición (ej:80)
    SERVER_PROTOCOL. -Nombre del protocolo de petición (ej: HTTP/1.1)
    SERVER_SOFTWARE. -Nombre del software del servidor (ej:Microsoft– IIS/4.0)

    Monografias.com

    VARIABLE DE ENTORNO CGI: Especificas del cliente
    Informacion sobre el navegador
    HTTP_ACCEPT: image/gif, image/jpeg
    HTTP_ACCEPT_ENCODING: gzip, deflate
    HTTP_ACCEPT_LANGUAGE: es-ES, en, pdf
    HTTP_REFERER: http://www.ua.es/index.html
    HTTP_USER_AGENT: Mozilla/4.7 [en] (Win98; I)

    Monografias.com

    VARIABLE DE ENTORNO CGI: Especificas de la petición

    Información sobre la petición recibida:
    CONTENT_LENGTH -Tamaño en números decimales de octetos y cualquier otra entidad adjunta
    PATH_INFO -Ruta que debe interpretar una aplicación CGI
    QUERY_STRING -Cadena de búsqueda URL-encoded.
    REMOTE_ADDR -Dirección IP del agente que hace la petición
    REMOTE_HOST -Nombre del dominio que realiza la petición
    REQUEST_METHOD -Metido de petición por el cliente.
    SCRIPT_NAME -URI para identificar la aplicación CGI

    Monografias.com

    VARIABLE DE ENTORNO CGI: Especificas de la petición

    Información sobre la petición recibida:
    CONTENT_TYPE -El tipo MIME de una entidad adjunta
    Tipos:
    Aplication -transmiten datos de la aplicación
    Text -Información textual (ej: plain)
    Multipart -Partes múltiples de tipos de datos independientes( ej: mixed, alternative..
    Message -Un mensaje encapsulado (ej: partial, External-body)
    Image -Datos de imagen (ej: gif, jpeg)
    Audio – Datos de audio (ej: basic)
    Video -Datos de video (ej mpeg)

    Monografias.com

    VARIABLE DE ENTORNO CGI: ACCESO DESDE C
    #include < stdio.h>

    char *variable;

    Variable=getenv(“SERVER_NAME”);
    }

    Monografias.com

    Establecimiento de la comunicación con el cliente
    El servidor añade a la respuesta del CGI mas datos para devolver un mensaje HTTP correcto.
    Si no se quiere que el servidor trate los datos devueltos por el CGI: Añadir el prefijo ‘nph-’(No Parser Header) al nombre del CGI.

    Monografias.com

    Referenciar un CGI
    Usando etiquetas HTML
    < a href=“direccion_del_CGI”>texto < /a>
    ej:< a href=“http://www.zonaweb.es/cgi-bin/hora.cgi”>Dime la hora < /a>

    Usando un formulario(lo más habitual)
    < form action=“direccion_del_CGI”>< !– elementos del formulario–>< /form>

    Monografias.com

    LOS FORMULARIOS Y CGI
    Uso de GET
    Se utiliza para obtener un fichero o recurso
    La vble de entorno QUERY_STRING lee los datos
    Tamaño limitado: 256 caracteres
    No registra cada petición
    Uso de POST
    Se usa para enviar datos al servidor
    Los datos se leen por la entrada estandar
    Tamaño ilimitado (CONTENT_LEGTH devuelve el tamaño)
    Registra cada petición

    Monografias.com

    LOS FORMULARIOS Y CGI
    El navegador envía los datos de la siguiente forma:
    ej: control1=valor1& control2=valor2& control3=valor3
    Para campos sin valor:
    ej control1=& control2=valor2& control3=valor3
    Caracteres para dividir los datos:
    &: Separa las diferentes parejas campo/valor.
    =: Separa el campo de su valor
    %xx: identifica los caracteres especiales
    +: Para codificar los espacios.

    Monografias.com

    Envio de informacion del servidor al CGI: Línea de comandos
    ? :Separa el CGI de los argumentos
    + : separa los argumentos entre sí.

    Cada palabra es un parámetro que le llega al CGI (argv).
    Los datos se encuentran en QYERY_STRING.

    < a href=“/cgi-bin/cgi?arg1+arg2+arg3>enlace< /a>

    Monografias.com

    Envio de informacion del servidor al CGI: Entrada estandar
    Envío mediante un formulario con POST.
    Se recibe por la entrada estándar
    Uso de las vbles:
    CONTENT_LENGTH
    CONTENT_TYPE

    Monografias.com

    Envio de informacion del servidor al CGI: Información de ruta de directorios

    Utilizando la vble de entorno PATH_INFO.

    < a href=“/cgi-bin/cgi/MasInformación?arg1+arg2+arg3>enlace< /a>

    Monografias.com

    Envio de informacion del servidor al CGI: URL
    Envio mediante formularios con GET.
    Formato: nom_cgi?campo1=valor1&camop2=valor2
    Los datos los recibe la vble QUERY_STRING.

    Ej: < a href=programaCGI.exe?arg1=1&arg2=5”>pincha aquí < /a>

    Monografias.com

    Ejemplo con formulario:
    < html>
    < head>< title>ejemplo de CGIs con Formulario
    < /title>< /head>
    < body>
    < form action="form.cgi" method="get">
    < tr>
    < td>< b>Ejemplo de Formulario< /b>< br>
    < br>
    < /td>
    < /tr>
    < tr>< td>Nombre< /td>
    < td>< input type="text" maxlength="160" size="40" name="nombre">
    < /td>
    < br>
    < /tr>
    < tr>< td>Color< /td>
    < td>< SELECT NAME="color">
    < OPTION>Blanco
    < OPTION>Azul
    < OPTION>Rojo
    < /SELECT >

    < /td>
    < /tr>
    < tr>< td>País< /td>
    < td>< SELECT NAME="pais">
    < OPTION value="cl">Francia
    < OPTION value="es">España
    < OPTION value="zz">Portugal
    < /SELECT >
    < /td>
    < br>
    < /tr>
    < tr>
    < td>< INPUT TYPE="submit" VALUE="Enviar datos">
    < /td>
    < /tr>
    < /table>
    < /form>
    < /body>
    < /html>

    Monografias.com

    Ejemplo con formulario:
    #include < stdio.h>
    #include "cgiforms.h"
    #define LARGO_MAXIMO 1024
    void imprimeVariable( char *lpzNombre );

    main(){
    printf("Content-Type: text/htmlnn");
    printf("< html>< body bgcolor=#ffffff text=#ffffff>n");
    printf("< p align=center>< table cellpadding=4 bgcolor=000000>n");
    printf("< tr>< td color=000080 align=center>");
    printf("< b>Campos recibidos desde el Form< /b>< /td>< /tr>n");
    imprimeVariable( "nombre" );
    imprimeVariable( "color" );
    imprimeVariable( "pais" );
    printf("< /table>n");
    printf("< /body>< /html>");
    return( 0 );
    }
    void imprimeVariable( char *lpzNombre ){
    /*** recibe el nombre de la variable yla imprime
    formateada como celdas de una tabla***/
    char lpzResultado[LARGO_MAXIMO];
    printf("< tr>n");
    printf("< td bgcolor="#9999FF" valign=top>%s< /td>n",Nombre);
    printf("< td bgcolor="#DDDDFF" valign=top>< font color=#000000>");
    /***aqui pide la variable y luego la imprime***/
    formPideVariable( lpzNombre,lpzResultado,LARGO_MAXIMO);
    printf(¨[%s]",lpzResultado);
    printf("< /td>n");
    printf("< /tr>n");

    Monografias.com

    Ejemplo con formulario:

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter