Descargar

CGI (interfaz de pasarela común) (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

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

edu.red

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)

edu.red

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

char *variable;

Variable=getenv(“SERVER_NAME”); }

edu.red

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.

edu.red

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>

edu.red

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

edu.red

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.

edu.red

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>

edu.red

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

edu.red

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>

edu.red

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>

edu.red

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>

edu.red

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");

edu.red

Ejemplo con formulario:

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente