el lenguaje c en cgi

23
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.

Upload: avani

Post on 24-Jan-2016

52 views

Category:

Documents


1 download

DESCRIPTION

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); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: El Lenguaje C en CGI

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.

Page 2: El Lenguaje C en CGI

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.

Page 3: El Lenguaje C en CGI

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’};

Page 4: El Lenguaje C en CGI

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 (&).

Page 5: El Lenguaje C en CGI

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&[email protected]

Page 6: El Lenguaje C en CGI

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 &.

Page 7: El Lenguaje C en CGI

Algunos códigos ASCII equivalentes

Page 8: El Lenguaje C en CGI

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”);}

Page 9: El Lenguaje C en CGI

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

Page 10: El Lenguaje C en CGI

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”;}

Page 11: El Lenguaje C en CGI

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.

Page 12: El Lenguaje C en CGI

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.

Page 13: El Lenguaje C en CGI

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.

Page 14: El Lenguaje C en CGI

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

Page 15: El Lenguaje C en CGI

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

Page 16: El Lenguaje C en CGI

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";

Page 17: El Lenguaje C en CGI

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

Page 18: El Lenguaje C en CGI

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';

Page 19: El Lenguaje C en CGI

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");

Page 20: El Lenguaje C en CGI

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]).

Page 21: El Lenguaje C en CGI

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;

Page 22: El Lenguaje C en CGI

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];

Page 23: El Lenguaje C en CGI

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 @