La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CGI Common Gateway Interface (interfaz de pasarela común) Gaspar Hernández Estevan.

Presentaciones similares


Presentación del tema: "CGI Common Gateway Interface (interfaz de pasarela común) Gaspar Hernández Estevan."— Transcripción de la presentación:

1 CGI Common Gateway Interface (interfaz de pasarela común) Gaspar Hernández Estevan

2 Í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

3 Introducción a CGI Es 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.

4 Introducción a CGI FUNCIÓ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 automático, foros de discusión, chats, comercio electrónico, rotadores y mapas de imágenes, juegos en línea y otros.

5 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).

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

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

8 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).

9 Escribiendo un programa CGI Content-Type:text/html Mi primer CGI #include Int main(int argc, char *argv[]) { printf(Content-type:texyt/html\n); printf(\n); printf( \n \n); printf(Mi primer CGI\n); printf( \n \n); return 0; } Cabecera Línea Separación Cuerpo

10 Escribiendo un programa CGI #include Int main(int argc, char *argv[]) { //… printf(Location: printf(\n); //… return 0; } Link a otra pagina web:

11 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

12 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: 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)

13 VARIABLE DE ENTORNO CGI: Especificas del cliente Informacion sobre el navegadorInformacion sobre el navegador HTTP_ACCEPT: image/gif, image/jpegHTTP_ACCEPT: image/gif, image/jpeg HTTP_ACCEPT_ENCODING: gzip, deflateHTTP_ACCEPT_ENCODING: gzip, deflate HTTP_ACCEPT_LANGUAGE: es-ES, en, pdfHTTP_ACCEPT_LANGUAGE: es-ES, en, pdf HTTP_REFERER: HTTP_USER_AGENT: Mozilla/4.7 [en] (Win98; I)HTTP_USER_AGENT: Mozilla/4.7 [en] (Win98; I)

14 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

15 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)

16 VARIABLE DE ENTORNO CGI: ACCESO DESDE C #include char *variable; Variable=getenv(SERVER_NAME); }

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

18 Referenciar un CGI Usando etiquetas HTML texto ej: Dime la hora Usando un formulario(lo más habitual)

19 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

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

21 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. enlace

22 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

23 Envio de informacion del servidor al CGI: Información de ruta de directorios Utilizando la vble de entorno PATH_INFO. enlace

24 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: pincha aquí

25 Ejemplo con formulario: ejemplo de CGIs con Formulario ejemplo de CGIs con Formulario Ejemplo de Formulario Ejemplo de Formulario
Nombre Nombre Color Color Blanco Blanco Azul Azul Rojo Rojo País País Francia Francia España España Portugal Portugal

26 Ejemplo con formulario: #include #include #include "cgiforms.h" #define LARGO_MAXIMO 1024 void imprimeVariable( char *lpzNombre ); main(){ printf("Content-Type: text/html\n\n"); printf("Content-Type: text/html\n\n"); printf(" \n"); printf(" \n"); printf(" "); printf(" "); printf(" Campos recibidos desde el Form \n"); printf(" Campos recibidos desde el Form \n"); imprimeVariable( "nombre" ); imprimeVariable( "nombre" ); imprimeVariable( "color" ); imprimeVariable( "color" ); imprimeVariable( "pais" ); imprimeVariable( "pais" ); printf(" \n"); printf(" \n"); printf(" "); printf(" "); return( 0 ); } void imprimeVariable( char *lpzNombre ){ /*** recibe el nombre de la variable yla imprime formateada como celdas de una tabla***/ char lpzResultado[LARGO_MAXIMO]; char lpzResultado[LARGO_MAXIMO]; printf(" \n"); printf(" \n"); printf(" %s \n",Nombre); printf(" %s \n",Nombre); printf(" "); printf(" "); /***aqui pide la variable y luego la imprime***/ formPideVariable( lpzNombre,lpzResultado,LARGO_MAXIMO); formPideVariable( lpzNombre,lpzResultado,LARGO_MAXIMO); printf(¨[%s]",lpzResultado); printf(¨[%s]",lpzResultado); printf(" \n"); printf(" \n");

27 Ejemplo con formulario:

28 ?


Descargar ppt "CGI Common Gateway Interface (interfaz de pasarela común) Gaspar Hernández Estevan."

Presentaciones similares


Anuncios Google