![]() |
![]() |
Cuando se envia una
forma en HTML
al servidor, la información es enviada a un programa que procesa los datos, este programa que es invocado en el servidor es definido en el
parametro action
del TAG FORM
( este programa es denominado
aplicacion de servidor
) . En tiempos recientes esta aplicación de servidor puede tomar una gran variedad de variaciones como : JSP (Java Server Pages), ASP (Active Server Pages), ADP (Aol Dynamic Pages), Servlets; guardar los datos en una
base de datos
, enviar los datos a otro servidor...etc.
Una de las primeras metodologias empleadas para realizar esta tarea fueron programas escritos en Perl para procesar información (también denominada CGI (Common Gateway Interface), a pesar de su antiguedad esta sigue siendo una forma muy comun para procesar información de sitios pequeños (* OL Basico *).
Cuando una aplicación recibe datos de una
forma en HTML
esta se encuentra definida en pares como: variable=valor&variable=valor&variable=valor
, además esta información puede arrivar de diferente manera o "metodo" POST o GET ; cada tecnlogia (aplicación de servidor) sea JSP/ASP/ADP/Servlets, procesa,envia y espera información de diferente manera, a continuación se define una función en Perl para manipular estos pares de valores.
sub inspeccionar_datos { local (*FORM_DATA) = @_; local ( $request_method, $query_string, @key_value_pairs, $key_value, $key, $value); $request_method = $ENV{'REQUEST_METHOD'}; if ($request_method eq "GET") { $query_string = $ENV{'QUERY_STRING'}; } elsif ($request_method eq "POST") { read (STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); } else { &return_error (500, "Server Error", " No es posible utilizar ese metodo"); } @key_value_pairs = split (/&/, $query_string); foreach $key_value (@key_value_pairs) { ($key, $value) = split (/=/, $key_value); $value =~ tr/+/ /; $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg; if (defined($FORM_DATA{$key})) { $FORM_DATA{$key} = join ("\0", $FORM_DATA{$key}, $value); } else { $FORM_DATA{$key} = $value; } } } |
Si se pregunta,debe ser asi de complejo ? o Porque no utilizar el modulo CGI.pm ? Vea Reduciendo el Trabajo en Formas
Sin entrar en mucho detalle, cuando es llamada esta función:
A continuación un programa en Perl que invoca y manipula variables de una forma:
#!/usr/local/perl
&inspeccionar_datos (*la_forma);
$nombre = $la_forma{'nombre'};
$ciudad = $la_forma{'ciudad'};
...
(la funcion
|
inspeccionar_datos
, la cual recibira como valor el hash
llamado la_forma
. nombre
y ciudad
) que toman los valores del hash la_forma
, los valores dentro de { }
definen el nombre de la variable en la forma, (el parametro name
dentro de los TAGS definidos en la
forma HTML
, los valores de estas variables (el parametro value
de los TAGS definidos en HTML) son asignados via el hash
directamente a las variables, en esta caso nombre
y ciudad
.inspeccionar_datos
, también es posible definir la función inspeccionar_datos
en otro archivo y mandarla llamar con el comando require (ej: require "inspeccionar_datos.pl")
.
Una vez definidas estas variables ( nombre
y ciudad
) es posible manipularlas de diferentes maneras: Pueden ser colocadas en un "flat file" (Vea
manipular archivos en Perl
), enviadas a una
base de datos
, enviar un correo electronico...etc.
El ejemplo anterior esta diseñado al nivel más crudo que pueda existir, ya que no utiliza ningun modulo de Perl; existe un modulo llamado CGI.pm que permite acortar la manera en que son manipuladas las variables (no existe la necesidad de definir funciones personales como inspeccionar_datos
).
ADP, JSP, Servlets , ASP
las cuales abundan como
aplicaciones de servidor
en los sitios de Internet hoy en dia.Le intereso el contenido ? | Quizas requiera un servicio de Tecnologia ? | Le gustaria que le avisaramos de nuestras actualizaciones ? |
Recomiende esta pagina a un amigo | Servicios OsmosisLatina | Agregese a la lista de correo de OsmosisLatina |
webmaster@osmosislatina.com | ©2000-2001 OsmosisLatina |