El Lenguaje C en CGI
El ANSI C, uno de los lenguajes de programación más conocidos, utiliza
la función getenv(),definida en el archivo de cabecera stdlib.h, para
recoger una variable de entorno. El prototipo de la función es:
char *getenv(char *nombre_variable);
La función getenv() recibe el nombre de una variable de entorno, y
devuelve una cadena (char *) correspondiente al valor almacenado en
dicha variable.
Ilustremos
esta
función
almacenando
en
la
variable
nombre_navegador el contenido de la variable de entorno
HTTP_USER_AGENT.
El lenguaje C en CGI II
void main(void){
char *nombre_navegador;
nombre_navegador=getenv(“HTTP_USER_AGENT”);
.....
....
}
Las líneas punteadas sugieren que en lo que respecta del programa se
debe utilizar la variable nombre_navegador.
El lenguaje PERL en CGI
Una alternativa al uso del ANSI C, es el lenguaje PERL; este lenguaje es
ideal para la creación de aplicaciones CGI debido a su poderoso
manejo de cadenas, y a que tiene todos los elementos propios de un
lenguaje estándar de programación.
En PERL se define una matriz (%ENV) en la que se almacenan todas
las variables de entorno. La instrucción que permite capturar el
contenido de entorno HTTP_USER_AGENT es la siguiente:
$ENV{‘HTTP_USER_AGENT’};
Codificación de los Datos
Recordemos que el método POST permite enviar los datos de los
campos del formulario como parte del mensaje, utilizando el canal
estándar de entrada. El método GET por el contrario, almacena la
respuesta dentro de la variable de entorno QUERY_STRING.
Sin importar si se utiliza el método POST o el método GET, los datos
del formulario se codifican de acuerdo a un estándar denominado
URLencoding. En este sistema de codificación se siguen las siguientes
reglas:
• El nombre de la variable y su valor asociado se separan mediante el
signo (=).
• Las parejas de datos están separadas mediante el símbolo de
ampersand (&).
Codificación de los Datos
• Los espacios en blanco se sustituyen por el símbolo suma (+).
Los restantes caracteres alfanuméricos no sufren ninguna variación.
Sin embargo, los caracteres no alfanuméricos, como el tabulador, los
símbolos de puntuación, etc. Se codifican así:
• se sustituye el carácter alfanumerico por el simbolo del tanto porciento
(%)., y a continuación se agrega el código ASCII equivalente en base
hexadecimal. Un ejemplo simple:
apellido=Antonio+P%E9rez&empresa=ACCION+LTDA&correo=em
[email protected]
Codificación de los Datos
Observaciones sobre el ejemplo.
En primer lugar el formulario contiene tres elementos que han sido
rellenados por el usuario del navegador: apellidos, empresa y correo.
Estos elementos pueden corresponder a cuadros de texto para recibir
los datos digitados en la página del navegador.
Al frente de cada variable (campo), separado con el símbolo igual (=),
se encuentra el correspondiente contenido. Como puede observarse
cada uno de estos datos requiere la utilización de símbolos especiales.
Las variables, incluyendo su contenido, están separadas mediante el
símbolo &.
Algunos códigos ASCII equivalentes
Capturando los datos
La primera acción del guión CGI es capturar los datos enviados por el
navegador. Si el método utilizado para la captura de los datos es GET,
entonces los datos se encuentran en QUERY_STRING
#include<stdio.h>
#include<stdlib..h>
#include<malloc..h>
void main(void){
char *cadena; // guarda la variable de entorno
cadena=(char*)malloc(sizeof(char)1000); //reserva
cadena=getenv(“QUERY_STRING”);
}
Programas utilizados para procesar
formularios
Para empezar, vamos a escribir un programa que recoja los datos
directamente del canal estándar de entrada, asumiendo que se ha
utilizado el método POST. Los datos son almacenados en la variable
info, con capacidad de hasta 1000 caracteres
Programa 1
#include<stdio.h>
#include<stdio.h>
void main(void){
int i;
char *info;
const char *cadena;
double longitud;
info=(char*)malloc(sizeof(char)1000);
cadena=getenv(“CONTENT_LENGTH”);
longitud=strtod(cadena,NULL);
for(i=0;i<longitud;i++)
{ fscanf(stdin,”%c”,&info[i]);
}
info[longitud]=“\0”;
}
PERL
Perl es un lenguaje interpretado. Esta característica
implica que su velocidad es menor que la que brinda
un lenguaje compilado, pero se compensa esta ventaja
al ofrecer algunas características entre las que se
incluye un hábil manejo de información de tipo
textual, y facilidades para la construcción de sistemas
complejos como servidores FTP o servidores de correo
electrónico.
PERL
Perl fue desarrollado por Larry Wall para el sistema
operativo UNIX. El nombre Perl es un acrónimo de
Lenguaje Práctico para Extracción y Reportes
(Practical Extractionand Report languaje), y como su
nombre sugiere, su principal campo de actividad se
encuentra en el procesamiento de texto y en el tratamiento
de formularios contenidos en las páginas Web.
PERL
Algunas de las ventajas del uso del lenguaje PERL son las
siguientes:
• Construcción de pequeños programas que pueden ser
usados como filtros para obtener información de ficheros,
realizar búsquedas, ...
• Se puede utilizar en varios entornos, como puede ser
Windows 95, OS/2, ..., sin realizar cambios de código,
siendo únicamente necesario la introducción del interprete
PERL correspondiente a cada sistema operativo.
• El mantenimiento y depuración de un programa en PERL
es mucho más sencillo que la de cualquier programa en C.
Ejecuciones de guiones PERL
Comenzaremos presentando un instrucción en lenguaje Perl:
print “hola, mundo”
Para el desarrollo completo de un guion CGI es necesario
crear un archivo que contenga el programa con una
extensión válida como por ejemplo hola.pl
El programa se ejecuta con la orden Perl hola.pl
Ejecuciones de guiones PERL
Si utilizamos UNIX o LINUX, podemos ejecutar el programa
de la siguiente manera:
% perl hola.pl
Otra forma de ejecutar el programa añadir en la primera línea de hola
lo siguiente:
#! /usr/bin/perl
“Los caracteres #! sirven para denotar que lo que viene a continuación
hace referencia a un interprete de comandos. “
y ejecutamos el programa de la siguiente manera:
% hola.pl
Ejecuciones de guiones PERL
Naturalmente las ordenes van a depender del sistema operativo. Si este
es UNIX o LINUX debemos darle permiso de ejecución. Esto se
realiza de la siguiente manera:
chmod u+x hola.pl
El Perl scripts en UNIX quedaría
#! /usr/bin/perl
print "HOLA MUNDO\n";
Elementos del Lenguaje
símbolos
• Las líneas de comentarios comienzan con el símbolo #.
• Las instrucciones terminan con el símbolo;
• La primera línea de un programa escrito en Perl se debe iniciar con un
comentario especial que identifica la ubicación del interprete Perl; por
ejemplo:
#!/usr/local/bin/perl
Tipos de datos en Perl
En Perl no se requiere que las variables sean declaradas antes de
usarlas, e incluso el tipo de las mismas puede cambiar a lo largo de la
ejecución del guión que las contiene. En general, vamos a emplear tres
tipos básicos: escalares, arreglos y arreglos asociativos.
Escalares
Estos datos se corresponden con caracteres, números y cadenas. Se
reconocen porque comienzan con el carácter $ (por ejemplo, $código).
Los datos de tipo escalar son lo más utilizados en la programación Perl.
Para almacenar números
$numeros = 10; # esta variable contiene el valor numérico 10
Para almacenar caracteres
$palabra = 'perros';
Tipos de datos en Perl
Escalares
Para almacenar números
$numeros = 10; # esta variable contiene el valor numérico 10
Para almacenar caracteres
$apellido = ‘gutierrez';
Para almacenar caracteres especiales, se utiliza “ “
$apellido = " gutierrez \n";
También es posible almacenar varias variables al mismo tiempo.
($nombre,$apellido1,$apellido2) = (“claudio”,“gutierrez",“soto");
Tipos de datos en Perl
Arreglos
Este tipo corresponde a lista de caracteres, listas de números o lista de
cadenas. En particular Perl admite que las listas contengan mezclas de
caracteres, números y cadenas.
Un arreglo se reconoce porque el identificador que lo maneja empieza
con el símbolo @ (por ejemplo, @salarios).
Los elementos individuales son referenciados mediante un subíndice,
como por ejemplo: @salarios[n].
Los arreglos empiezan con el componente cero (por ejemplo,
@salarios[0]).
Tipos de datos en Perl
Arreglos
También es posible definir los arreglos de la siguiente manera:
@Alumnos = (“Luis",“Jacqueline",“Claudia” );
Es posible obtener el numero de elementos que conforman el arreglo de
los escalares. Esto es posible utilizando los símbolos $#. Sin embargo
este nos devuelve el numero de elementos menos 1.
$numero_alumnos = $#Alumnos+1;
Tipos de datos en Perl
Arreglos
También podemos acceder a varios elementos de un array de la forma
@nom_variable[indice1,...,indicen], por ejemplo:
print @Alumnos[0,1];
imprimirá el primer y segundo elemento del array @Alumnos.
Otra forma de acceder a los elementos de un array es usando el
operador rango .. , si quisiéramos imprimir todos los valores desde un
índice i hasta un indice j deberíamos utilizar el siguiente formato
@nom_variable[i..j], por ejemplo:
print @Alumnos[0..2];
Tipos de datos en Perl
Arreglos Asociativos
Los arreglos asociativos se indexan mediante cadenas. Cada uno de los
elementos del arreglo asociativo maneja la combinación
elemento/valor, por ejemplo,
%mes=(‘enero’,31, ‘febrero’,28);
Los arreglos asociativos se reconocen porque comienzan con el
símbolo % ( por ejemplo, %mes).
Se tiene acceso a los elementos individuales utilizando cadenas
especificas encerradas entre llaves y con el uso del símbolo @
Descargar

El Lenguaje C en CGI