CGI%20Common%20Gateway%20Interface%20(interfaz%20de%20pasarela%20com - PowerPoint PPT Presentation

About This Presentation
Title:

CGI%20Common%20Gateway%20Interface%20(interfaz%20de%20pasarela%20com

Description:

El CGI cambio la forma de manipular informaci n en el web. ... HTTP_ACCEPT_LANGUAGE: es-ES, en, pdf. HTTP_REFERER: http://www.ua.es/index.html ... – PowerPoint PPT presentation

Number of Views:261
Avg rating:3.0/5.0
Slides: 29
Provided by: aulasdein
Category:

less

Transcript and Presenter's Notes

Title: CGI%20Common%20Gateway%20Interface%20(interfaz%20de%20pasarela%20com


1
CGICommon 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 email
    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 ltstdio.hgt Int main(int argc, char
argv) printf(Content-typetexyt/html\n)
printf(\n) printf(ltHTMLgt\nltBODYgt\n)
printf(Mi primer CGI\n) printf(lt/HTMLgt\nlt/BOD
Ygt\n) return 0
Línea Separación
Content-Typetext/html

ltHTMLgt ltBODYgt Mi primer CGI lt/BODYgt lt/HTMLgt
Cuerpo
10
Escribiendo un programa CGI
Link a otra pagina web
include ltstdio.hgt Int main(int argc, char
argv) // printf(Location
http//www.ua.es\n) 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 definirNULL.
  • 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 www.ua.es)
  • SERVER_PORT. -Puerto del servidor donde se
    recibió la petición (ej80)
  • SERVER_PROTOCOL. -Nombre del protocolo de
    petición (ej HTTP/1.1)
  • SERVER_SOFTWARE. -Nombre del software del
    servidor (ejMicrosoft- 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//www.ua.es/index.html
  • 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 ltstdio.hgt char variable Variablegete
nv(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
  • lta hrefdireccion_del_CGIgttexto lt/agt
  • ejlta hrefhttp//www.zonaweb.es/cgi-bin/hora.cgi
    gtDime la hora lt/agt
  • Usando un formulario(lo más habitual)
  • ltform actiondireccion_del_CGIgtlt!-- elementos
    del formulario--gtlt/formgt

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 control1valor1 control2valor2
    control3valor3
  • Para campos sin valor
  • ej control1 control2valor2 control3valor3
  • 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.

lta href/cgi-bin/cgi?arg1arg2arg3gtenlacelt/agt
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.

lta href/cgi-bin/cgi/MasInformación?arg1arg2arg
3gtenlacelt/agt
24
Envio de informacion del servidor al CGI URL
  • Envio mediante formularios con GET.
  • Formato nom_cgi?campo1valor1camop2valor2
  • Los datos los recibe la vble QUERY_STRING.

Ej lta hrefprogramaCGI.exe?arg11arg25gtpincha
aquí lt/agt
25
Ejemplo con formulario
  • lthtmlgt
  • ltheadgtlttitlegtejemplo de CGIs con Formulario
  • lt/titlegtlt/headgt
  • ltbodygt
  • ltform action"form.cgi" method"get"gt
  • lttrgt
  • lttdgtltbgtEjemplo de Formulariolt/bgtltbrgt
  • ltbrgt
  • lt/tdgt
  • lt/trgt
  • lttrgtlttdgtNombrelt/tdgt
  • lttdgtltinput type"text" maxlength"160"
    size"40" name"nombre"gt
  • lt/tdgt
  • ltbrgt
  • lt/trgt
  • lttrgtlttdgtColorlt/tdgt
  • lttdgtltSELECT NAME"color"gt
  • ltOPTIONgtBlanco
  • ltOPTIONgtAzul

lt/tdgt lt/trgt lttrgtlttdgtPaíslt/tdgt
lttdgtltSELECT NAME"pais"gt ltOPTION
value"cl"gtFrancia ltOPTION
value"es"gtEspaña ltOPTION
value"zz"gtPortugal lt/SELECT gt
lt/tdgt ltbrgt lt/trgt lttrgt lttdgtltINPUT
TYPE"submit" VALUE"Enviar datos"gt lt/tdgt
lt/trgt lt/tablegt lt/formgt lt/bodygt lt/htmlgt
26
Ejemplo con formulario
  • include ltstdio.hgt
  • include "cgiforms.h"
  • define LARGO_MAXIMO 1024
  • void imprimeVariable( char lpzNombre )
  • main()
  • printf("Content-Type text/html\n\n")
  • printf("lthtmlgtltbody bgcolorffffff
    textffffffgt\n")
  • printf("ltp aligncentergtlttable cellpadding4
    bgcolor000000gt\n")
  • printf("lttrgtlttd color000080 aligncentergt")
  • printf("ltbgtCampos recibidos desde el
    Formlt/bgtlt/tdgtlt/trgt\n")
  • imprimeVariable( "nombre" )
  • imprimeVariable( "color" )
  • imprimeVariable( "pais" )
  • printf("lt/tablegt\n")
  • printf("lt/bodygtlt/htmlgt")
  • return( 0 )

void imprimeVariable( char lpzNombre ) /
recibe el nombre de la variable yla imprime
formateada como celdas de una tabla/ char
lpzResultadoLARGO_MAXIMO printf("lttrgt\n")
printf("lttd bgcolor\"9999FF\"
valigntopgtslt/tdgt\n",Nombre) printf("lttd
bgcolor\"DDDDFF\" valigntopgtltfont
color000000gt") /aqui pide la variable y
luego la imprime/ formPideVariable(
lpzNombre,lpzResultado,LARGO_MAXIMO)
printf(s",lpzResultado)
printf("lt/tdgt\n") printf("lt/trgt\n")
27
Ejemplo con formulario
28
  • ?
Write a Comment
User Comments (0)
About PowerShow.com