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)

Presentaciones similares


Presentación del tema: "CGI Common Gateway Interface (interfaz de pasarela común)"— 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
Cabecera #include <stdio.h> Int main(int argc, char *argv[]) { printf(“Content-type:texyt/html\n”); printf(\n”); printf(“<HTML>\n<BODY>\n”); printf(“Mi primer CGI\n”); printf(“</HTML>\n</BODY>\n”); return 0; } Línea Separación Content-Type:text/html <HTML> <BODY> Mi primer CGI </BODY> </HTML> Cuerpo

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

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 navegador HTTP_ACCEPT: image/gif, image/jpeg HTTP_ACCEPT_ENCODING: gzip, deflate HTTP_ACCEPT_LANGUAGE: es-ES, en, pdf HTTP_REFERER: 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 <stdio.h> 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. 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
<a href=“direccion_del_CGI”>texto </a> ej:<a href=“ la hora </a> Usando un formulario(lo más habitual) <form action=“direccion_del_CGI”><!-- elementos del formulario--></form>

19 LOS FORMULARIOS Y CGI Uso de GET Uso de POST
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. <a href=“/cgi-bin/cgi?arg1+arg2+arg3>enlace</a>

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 Utilizando la vble de entorno PATH_INFO.
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>

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: <a href=programaCGI.exe?arg1=1&arg2=5”>pincha aquí </a>

25 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"> <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 > <br> <tr> <td><INPUT TYPE="submit" VALUE="Enviar datos"> </table> </form> </body> </html>

26 Ejemplo con formulario:
#include <stdio.h> #include "cgiforms.h" #define LARGO_MAXIMO 1024 void imprimeVariable( char *lpzNombre ); main(){ printf("Content-Type: text/html\n\n"); printf("<html><body bgcolor=#ffffff text=#ffffff>\n"); printf("<p align=center><table cellpadding=4 bgcolor=000000>\n"); printf("<tr><td color= 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");

27 Ejemplo con formulario:

28 ?


Descargar ppt "CGI Common Gateway Interface (interfaz de pasarela común)"

Presentaciones similares


Anuncios Google