You are on page 1of 43

Programacin con CGI

Presentacin

Universidad de Guadalajara Centro de Cmputo de Alto Rendimiento CENCAR


Ing. Javier Gonzlez Snchez jgonzale@oraculo.cencar.udg.mx

Programacin con CGI


Presentacin

1. Conceptos y elementos bsicos 2. Programacin con TCL 3. Formas y documentos HTML 4. Inclusiones del lado del servidor

Programacin con CGI


MODULO I. Conceptos y elementos bsicos de CGI
Que es CGI ? Cuando y como programar con CGI? Estructura de un programa CGI Variables de ambiente Codificacin de la informacin

Programacin con CGI


Que es CGI?

Common Gateway Interface


Es un conjunto de especificaciones que permiten a un servidor WWW ejecutar programas, con esto se logra generar documentos dinmicamente.
programas CGI HTTPd *.html *.html

Programacin con CGI


Cuando y como programar con CGI?

Cuando?
Para generar documentos dinamicamente. Para interatuar con el usuario

Como?
Cualquier lenguaje de programacion puede ser utilizado con CGI siempre y cuando permita accesar las variables de ambiente del sistema y permita accesar la entrada y salida estandar.

nota

Programacin con CGI


como programar ...?

La programacin es un arte (Knuth 1969) y una ciencia (Gries 1991) . . . La programacin es una disciplina de ingenieria y como tal est fundamentada. PROGRAMAR: es aplicar mtodos para disear y escribir programas.

nota

Programacin con CGI


como programar ...?

Anlisis del sistema.


Informacin + Jerarquia de funciones

Modelar la solucin.
ESTRUCTURA = datos + estructuras de control

Codificar.
Utilizar un lenguaje de programacin

cual lenguaje utilizar con CGI?

Programacin con CGI


El lenguaje es importante ...

Opciones.
C/C++, Visual Basic, Perl, TCL, C shell, etc.

Necesidades.
Facilidades para manipular informacin Acceso a sistemas DBMS.

Una solucin
TCL (Tool Command Languaje) una opcin para sistemas UNIX ...

Programacin con CGI


Un ejemplo de uso
DBMS Base de Datos

programa TCL entrada/salida estandar CGI HTTPd *.html

Sistema de Base de Datos en Internet con CGI

Programacin con CGI


Estructura de un programa CGI (1)

Encabezado.
La primera informacion que un programa CGI debe enviar a la salida estandar.

Datos
El programa puede generar cualquier dato que corresponda con un tipo MIME (Multi-purpose Internet Mail Extension) y enviarlo al servidor: texto, imagenes, audio, video, etc.

Programacin con CGI


Estructura de un programa CGI (2)

Encabezado.
Indica el tipo de documento que ser enviado: nombre:valor nombre Content-type Location Content-length Content-encoding descripcion tipo MIME (tipo/subtipo) URL para redireccionar longitud en bytes codificacion de los datos (x-zip x-compress)

Programacin con CGI


Estructura de un programa CGI (3)

Encabezado.
Separamos el encabezado de los datos con una linea en blanco y cada linea con un fin de linea.

Datos.
Salida estandar del programa. Resultados de la ejecucin.

Programacin con CGI


Ejemplo (shell script UNIX)
lenguaje

encabezado

#!/bin/sh # procesar informacin # enviar datos al cliente cat <<EOF Content-type: text/html <html> . . </html> EOF # fin del programa
tipo MIME

datos

Programacin con CGI


Comunicacin cliente/servidor

Variables de ambiente.
Para comunicar informacion a nuestros programas el servidor define variables de ambiente : Variables de entrada Variables del cliente Variables del servidor Valores de Formas. Proporcionan al servidor informacion del cliente. Proporcionan informacion sobre el servidor y sus recursos.

Programacin con CGI


Variables de ambiente (1)

Variables de entrada
QUERY_STRING PATH_INFO PATH_TRANSLATED REQUEST_METHOD CONTENT_TYPE CONTENT_LENGTH

Programacin con CGI


Variables de ambiente (2)

Variables del cliente


REMOTE_HOST REMOTE_ADDR REMOTE_USER AUTH_TYPE HTTPD_*

Programacin con CGI


Variables de ambiente (3)

Variables del servidor


SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE GATEWAY_INTERFACE SCRIPT_NAME

Programacin con CGI


Codificacion de la informacin

Reglas de codificacin
La informacion que es enviada a un programa CGI desde un cliente es codificada utilizando dos reglas: 1. Los espacios se convierten a +. 2. Cualquier caracter puede ser representado como un valor hexadecimal precedidio por %

Programacin con CGI


Seguridad

Consideraciones:
CGI provee acceso directo a los recursos de nuestro sistema. Implican un hoyo de acceso.

Tecnicas basicas:
Verificar datos provenientes del cliente. Autenticacin. Verificar accesos al sistema de archivos.

Programacin con CGI


algo ms interesante . . .

Como proporcionar datos a un programa ? Como procesar y visualizar informacin ?

Programacin con CGI


MODULO II. Formas y documentos HTML
Antecedentes de HTML Elementos de una forma Metodos de envio de formas

Programacin con CGI


antecedentes

Formas
Es la manera ms comn de llevar datos del usuario a un programa CGI. Permiten introducir datos utilizando diversos elementos grficos: cuadros de texto, botones y menus. Interfaz para introducir datos a los programas CGI

Programacin con CGI


Elementos de una forma

Estructura.
<FORM ACTION=[url] METHOD=[metodo]> [cuerpo de la forma] </FORM> ACTION Define el URL del programa CGI al cual se le enviar la forma. METHOD Es el mtodo que se utiliza para enviar la forma: GET o POST. CUERPO HTML y sealadores de especificacin.

Programacin con CGI


Sealadores de especificacin

INPUT
Especifica un elemento de entrada simple, el cual puede ser un boton, un cuadro de verificacin o un campo de texto. <input type=[tipo] name=[nom] value=[val] [otros]> TYPE text,passwd,checkbox,radio,submit,reset NOMBRE nombre simbolico VALOR para texto o passwd contenido inicial. para un boton el valor cuando es electo para submit y reset la etiqueta del boton

Programacin con CGI


Sealadores de especificacin

INPUT (2)
CHECKED SIZE MAXLENGTH Boton selecto por omision Tamao en caracteres para text y passwd Caracteres que se aceptan

Programacin con CGI


Sealadores de especificacin

SELECT
Define menus desplegables y listas deslizantes.
<select name=nom> <option> texto1 <option> texto2 ... </select>

NAME Nombre simblico SIZE Define menu o lista de seleccion MULTIPLE Permite la seleccion multiple SELECTED opcion seleccionada.

Programacin con CGI


Sealadores de especificacin

TEXTAREA
Permite colocar un campo para insertar multiples lineas de texto con contenido inicial optativo.
<textarea name=nom> [texto opcional] </textarea>

NAME ROWS COLS

Nombre simblico. Nmero de renglones. Nmero de columnas.

Programacin con CGI


Envio de formas

Mtodo GET.
El contenido de la forma se ensambla en el URL: URL_prg?nombre=valor&nombre=valor& ...

Mtodo POST.
La codificacion de la informacion es la misma que para el mtod GET pero en lugar de anexar la in_ formacion al URL esta se envia al stdin del programa.

Programacin con CGI


MODULO III. Programacin con TCL
Generalidades de TCL Manipulacin de datos Sentencias y expresiones Control de flujo Procedimientos Estructuras de datos Archivos Subprocesos

Programacin con CGI


Generalidades

Caracteristicas de TCL
Facilidad en el manejo de la informacion, es un lenguaje funcional (estilo LISP). Es interpretado. Cuenta con extensiones diversas: (oratcl) Es portable ya que existen versiones TCL para diversos equipos y sistemas operativos.

Programacin con CGI


Un acercamiento a TCL puts = comando para enviar datos a la salida estandar. Agrupar argumentos de comandos

Ejemplo:
# este es un comentario puts hola mundo - entre comillas; #comentario puts {hola - entre llaves} puts linea 1; puts linea 2 puts hola mundo;

Programacin con CGI


Asignar valores a variables TCL almacena datos como cadenas y realiza conversiones automaticamete cuando es necesario. LENGUAJE NO TIPIFICADO. set = operador de asignacion. Para accesar al contenido de una variable se utiliza el nombre de la variable con el prefijo $.

<ver ejemplo>

Programacin con CGI


Evaluacion de sentencias

comando arg1 arg2 arg3 ...


Agrupacion de argumentos con comillas Agrupacion de argumentos con llaves Agrupacion de argumentos con corchetes

Programacin con CGI


Sentencias de control de flujo

switch
switch cadena { patron1 cuerpo1 }

if
if { condicion } {accion1} else {accion2}

Programacin con CGI


Sentencias de control iterativo

while
while { condicion} { acciones }

for
for {inicializar} {condicion} {incremento} { acciones }

Programacin con CGI


Procedimientos

El comando proc
Anexa un nuevo comando a la lista de comandos conocidos.

Sintaxis:
proc nombre {arg1 arg2} { cuerpo1 }

Programacin con CGI


Estructuras de datos (1)

Listas
Coleccin ordenada de objetos: numeros, palabras, cadenas, etc.

Creacin
set lista [list elem1 elem2 ... elemN] set lista [split cadena caracter]

Comandos varios
lindex lista indice llength lista foreach variable $lista { cuerpo }

Programacin con CGI


Estructuras de datos (2)

Cadenas
Grupo de caracteres

Creacin
set cadena valor

Comandos varios
string length cadena string index cadena indice string match patron cadena string tolower cadena string toupper cadena string trim cadena

Programacin con CGI


Estructuras de datos (3)

Arreglos
TCL utiliza arreglos cuyos indices son cadenas, ARREGLOS ASOCIATIVOS.

Creacin
set arreglo(indice) valor

Comandos varios
array exist arreglo array names arreglo array size arreglo set lista [array get arreglo] array set arreglo lista

Programacin con CGI


Expresiones y subexpresiones

Bsqueda
regexp expresion cadena arg1 arg2 ... argN <ver tabla> Retorna un valor boleano.

Sustitucin
Sustituye un grupo de caracteres de una cadena. sintaxis: regsub -all expresion cadena remplazo variable

Programacin con CGI


Archivos

Manejo de archivos.
set archivoID [open nom_arch modo] puts $archivoID datos set linea [gets $archivoID] set datos [read $archivoID numbytes] eof $archivoID seek $archivoID desplazamiento origen origen -> start, current, end close $archivoID

Programacin con CGI


OraTCL

Extensiones de TCL para ORACLE


Definir las variables de ambiente propias de ORACLE. set env(ORACLE_HOME). Establecer conexin con la base de datos. orasql orafetch

Programacin con CGI


Server Side Includes

Extensiones de TCL para ORACLE


Tecnica para incluir resultados de expresiones, archivos y programas externos dentro de un documento HTML. Formato General. <!--#comando etiqueta=valor --> Utilidad. Incluir archivos -> #include manipular variables -> #echo ejecutar programas o comandos -> #exec

You might also like