Title: CGI I
1CGI I
- La mayor parte de los elementos HTML de que
disponemos permite al visitante visualizar los
contenidos de un sitio, pero no interactuar con
él. Dicho de otro modo, la relación
usuario/página es unidireccional y estática. Con
los formularios, por el contrario, el usuario
puede interactuar con el sitio enviando sus
comentarios, haciendo peticiones sin necesidad de
escribir mensajes por correo electrónico,
firmando en el libro de visitas, contestando a
encuestas y sondeos, etc. Todo ello define una
relación bidireccional, que es posible sólo
gracias a la intervención de programas residentes
en servidores WWW se trata de los denominados
CGI o Common Gateway Interface (Interfaz Común de
Pasarela).
2Formularios II
Los CGI hacen posible lo que no podrÃa hacerse si
se actuara desde el lado del cliente. Es decir,
la gestión de los formularios depende, en
realidad, más del servidor que de la programación
HTML. Para que un formulario HTML funcione es
necesario disponer de un CGI residente en el
propio servidor o en otro sitio.
3Procesamiento de Formularios
Una vez que el usuario ha digitado completamente
los datos del formulario, debe pulsar el botón de
envÃo (submit). Esta acción desencadena dos
procesos claramente definidos el primero de
ellos consiste en iniciar la ejecución de un
programa almacenado en el servidor y, el segundo,
en transferir a dicha aplicación los datos
almacenados en el formulario.
4Procesamiento de Formularios II
La etiqueta ltFORMgt contiene dos atributos, ACTION
Y METHOD, que permiten ejecutar los procesos
mencionados. El atributo METHOD determina la
forma como son enviados los datos hacia el
servidor, mientras que el atributo ACTION inicia
la ejecución del programa que va a procesar los
datos transferidos desde el formulario
5El atributo ACTION
El valor asociado con el atributo ACTION es el
URL (o trayectoria) en donde se encuentra el
guión (programa). El formato del atributo ACTION
es ltFORM ACTIONprotocolo//servidor/trayectoria
/aplicación.exegt ltFORM ACTIONhttp//univ.edu.co
/libros/cgi/formas/demo.exegt
6El atributo METHOD
La información contenida en el formulario puede
transferirse siguiendo dos esquemas diferentes
GET o POST GET En el método GET los datos del
formulario son transferidos al servidor y
almacenados en la variable estándar QUERY_STRING
esta variable, definida por la interfaz CGI,
pertenece al conjunto de variables de entorno que
se encuentran disponibles en el servidor, y puede
ser utilizada deforma directa por cualquier
programa que pueda hacer uso de ella. ltFORM
METHODGET ACTIONhttp//univ.edu.co/libros/cgi
/formas/demo.exegt
7El atributo METHOD
GET El método GET limita la cantidad de
información que se puede transferir al servidor,
debido a que los datos que se pueden contener la
variable QUERY_STRING están limitados por la
especificación del sistema
8El atributo METHOD
POST El método POST se permite el envÃo de los
datos contenidos en el formulario a través de un
canal separad, de modo que el guión (programa)
recupera los datos leyendo la información de la
entrada estándar del sistema. ltFORM
METHODPOST ACTIONhttp//univ.edu.co/libros/cg
i/formas/demo.exegt
9Variables de entorno
El estándar CGI define un conjunto de variables,
denominadas variables de entorno, lista para
almacenar información relativa al cliente, al
servidor y a los datos provenientes de una
formulario. Estas variables pueden ser detectadas
por la mayorÃa de los lenguajes de programación,
y algunas adquieren el valor que le corresponden
en el momento de la transferencia del formulario
10Variables de entorno
El estándar CGI define un conjunto de variables,
denominadas variables de entorno, lista para
almacenar información relativa al cliente, al
servidor y a los datos provenientes de una
formulario. Estas variables pueden ser detectadas
por la mayorÃa de los lenguajes de programación,
y algunas adquieren el valor que le corresponden
en el momento de la transferencia del formulario
11Ejemplos de variables de entorno
- HTTP_USER_AGENTcontiene el nombre y la versión
del navegador. - HTTP_ACCEPTProporcionalos formatos MIME que
acepta el navegador. - REMOTE_HOSTContiene el nombre (cadena
alfanumérica) del host del servidor. - REMOTE_ADDRContiene la dirección IP en notación
decimal punteada (por ejemplo, 127.0.0.1). - SERVER_SOFTWAREContiene el nombre y la versión
del software del servidor.
12Ejemplos de variables de entorno
- SERVER_NAMEcontiene el nombre del host del
servidor, los alias DNS o la dirección IP. - QUERY_STRINGDatos del formulario (usando GET).
- SCRIPT_NAMEEstablece el nombre de archivo del
programa CGI. - CONTENT_TYPEDefine el tipo de contenido MIME de
los datos - CONTENT_LENGHTnumero de bytes de los datos
recibidos con POST.
13Ejemplos de variables de entorno
- REQUEST_METHODMétodo con el que se envÃa el
formulario. - GATEWAY_INTERFACEVersión de la especificación
CGI usada para la comunicación. - SERVER_PORTEpuerto del servidor a través del
cual se están enviando los datos. - SERVER_PROTOCOLnombre y versión de protocolo
utilizado en la comunicación. - AUTH_TYPEContiene el método de autetificación
del usuario.
14Ejemplo de CGI
Empecemos creando un formulario muy simple en el
que figuren el nombre y apellidos, la dirección
de correo electrónico y un comentario sobre el
sitio. Para ello, introducimos el siguiente
códigoltFORM ACTIONhttp//www.coder.com/code/mai
lform/mailform.pl.cgi METHODPOSTgtEste campo
invoca el CGI presente en el servidor.
15Ejemplo de CGI
- ltINPUT TYPEHIDDEN NAMEMAILFORM_ID
VALUE"Val_7743"gtEste campo se modifica sólo por
lo que se refiere al código de identificación
"Val_7743", que se sustituye con el comunicado
por el servicio gratuito mediante correo
electrónico. Este sencillo procedimiento es
fundamental para que tu formulario llegue a tu
buzón de correo y no al de otra persona.
16Ejemplo de CGI
- ltINPUT TYPEHIDDEN NAMEMAILFORM_SUBJECT
VALUE"Mi primer formulario"gtEste campo define
el asunto del mensaje que te llegará por correo
electrónico en el momento del envÃo con el
contenido del formulario. En lugar de "Mi primer
formulario", puedes usar la frase que retengas
más oportuna.
17Ejemplo de CGI
- ltINPUT TYPEHIDDEN NAMEMAILFORM_URL
VALUE"http//www.htmlpoint.com/risposta.htm"gtEst
e campo indica la página web que deberá
visualizarse tras pulsar el botón "EnvÃa". En
este ejemplo hemos insertado un documento
presente en el servidor de HTMLpoint que puedes
sustituir con una página presente en tu servidor.
18Ejemplo de CGI
- ltINPUT TYPEtext NAMEMAILFORM_FROM
SIZE33gtEste campo debe permanecer invariado (no
por lo que respecta a las dimensiones,
obviamente) ya que permite obtener en el
"reply-to" del mensaje que el formulario envÃa,
la dirección de quien ha rellenado la plantilla.
19Ejemplo de CGI
- ltINPUT TYPEtext NAMEMAILFORM_NAME
SIZE33gtEste campo debe permanecer inalterado
(no por lo que respecta a las dimensiones,
obviamente) ya que introduce en el mensaje que
nos llegará por correo electrónico ese nombre en
el campo del remitente.
20Ejemplo de CGI
- ltINPUT TYPESUBMIT VALUE"EnvÃa"gtEste campo
es necesario para expedir el módulo, pero no se
sale de las reglas generales de los formularios.
21ltINPUT typeSUBMITgt
- ltINPUT type"SUBMIT" value"EnvÃa"gtEl
clásico botón de envÃo que remite el formulario
con todo su contenido. La dimensión del botón
depende de la longitud del texto.
22Ejemplo