230 likes | 510 Views
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);
E N D
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=empid@diansa.com.co
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 &.
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 @