• No se han encontrado resultados

Programación de páginas web dinámicas con CGIs

N/A
N/A
Protected

Academic year: 2021

Share "Programación de páginas web dinámicas con CGIs"

Copied!
21
0
0

Texto completo

(1)

Programación de páginas

web dinámicas con CGIs

(2)

Esquema

Webs estáticas o dinámicas.

CGIs: Que son y como funcionan

Formularios para enviar información

(3)

Webs estáticas o dinámicas

Una (página) web estática está formada por

elementos (html, imágenes, ...) que existen

independientemente de la navegación que se

realice por ella.

Una (página) web dinámica tiene componentes

que se crean (y destruyen) dinámicamente en

respuesta a acciones desencadenadas durante

la navegación.

(4)

Ejemplos

•  4estacions.html • primavera.html • estiu.html • hivern.html • tardor.html • IMATGES (folder) • fig1.jpg • ... • fign.jpg • Directorio.html • listado.html Web estática

Sitio web con una página principal desde dondes se accede a otras páginas o enlaces.

Las páginas existen aunque nunca se acceda a ellas.

Web dinámica

Sistema para generar listados a partir de una base de datos.

Cada nueva petición genera un nuevo listado (nuevo=no existía la página antes de pedirla)

(5)

Ejemplo

4est

pri ver oto inv

IMAGES dir Server, Database list Estática 4 estaciones Dinámica directori

(6)

Que son los CGIs

Common Gateway Interface.

Permiten la ejecución de programas a

través de la web.

Pueden escribirse en cualquier lenguaje

Perl, R, Java, C, C++

Perl tiene una muy buena interfaz para

(7)

¿Como funcionan los CGIs?

• Se crea un programa, se hace

ejecutable y se almacena en el servidor. • Se envía información al programa mediante un formulario • Se ejecuta el programa y

retorna los resultados al navegador.

(8)

Formularios y CGIs

La mayoría de scripts de CGI se

invocan desde un formulario (puede

también hacerse directamente desde

un enlace!)

Mediante los formularios

Se recopila información necesaria

(parámetros)

Se envía la información al script al pulsar

(9)

Envío de la información

- “method”: como se pasa la información

– “post” : con la cabecera HTTP. Invisible

– “get” : con la cadena de la URL: visible en la barra de

navegación

“action”: el programa a invocar

“input type=“submit”:

– Boton de ejecución que invoca al programa descrito por

‘action’

<form method=“post”, action=“procesa.pl”> …….

<input type=“submit” value=“Mandalo ya”> </form>

(10)

POST y GET

• POST

– EL programa obtiene la información de stdin (el

teclado, la variable generada por el formulario)

– Puede enviarse tantos datos como se desee. – La información no es visible desde fuera

• GET

– El programa CGI lee los datos de una variable de

entorno (QUERY_STRING)

– Límite en la cantidad de datos que se puede enviar

(1,000 caracteres)

– Los datos son visibles en la barra de navegación

(11)

CGIs en perl (1)

Un programa “no CGI”

#!/usr/bin/perl use strict;

use warnings;

print "¿Cómo te llamas?"; my $username;

$username = <STDIN>; chomp($username);

print "Hello, $username.\n";

(12)

CGIs en perl (2)

Conversion en un programa CGI

#!/usr/bin/perl use strict;

use warnings;

use CGI qw(:standard); # use the CGI library

# print "What is your username? ";

my $username; # "declare" the variable

# $username = <STDIN>;

$username = param (“username”); # read the username # chomp($username);

print header(); # output <HTML>

print start_html(“First CGI program”); # add a title

print "Hello, $username.\n";

print end_html(); # output </HTML>

(13)

Invocación del programa vía web

<html> <head><title>Get Username</title></head> <body bgcolor=white> <FORM ACTION="http://miservidor/~usuario/cgi-bin/getusernamePL.cgi" METHOD="POST"> <h2>Form Example 1</h2>

Entra tu nombre de usuario:

<INPUT TYPE="text" SIZE="20" NAME="username"> <input type=“submit“ value=“Submit Query”>

</FORM> </body>

</html>

(14)

Aspecto del programa

Entramos “MARIAdelasMERCEDES Y pulsamos el boton “Envia'l”

(15)

Resumen: Creación de un CGI

Primera fase: programa sin parámetros en el

servidor

 Crear un programa que se ejecute desde linea de

comandos

 Ponerlo en el directorio .public_html/cgi-bin

 Asignar valores a las variables, p.ej: $username =

“alex”;

 Grabar el resultado en un archivo, perl myprog.cgi > output.html

(16)

Resumen: Creación de un CGI (2)

Segunda fase: asegurando la visibilidad del

programa

 Probar de llamar el cgi desde una cuenta distinta a la

usada para copiarlo en el servidor

(asegurarse de que los permisos de lectura-ejecución son los adecuados)

perl /users/myusername/.public_html/cgi-bin/miprograma.cgi > output

(17)

Resumen: Creación de un CGI (3)

Tercera fase: Crear y probar el formulario

 Diseñar un formulario que llame a un cgi sin

parámetros

 Por ejemplo un cgi que tan sólo diga “Hola

mundo”

 Copiar el formulario en el directorio designado en

el servidor para guardar los archivos .html, por ejemplo “.public_html”

 Abrir el archivo html en el navegador y apretar

“enviar

(18)

Resumen: Creación de un CGI (4)

 Cuarta fase: asegurarse de que el CGI en recibe bien los

parámetros

 Crear una versión simplificada del CGI que se limite a coger los parámetros y enviarlos al navegador.

 Piede hacerse comentando todo el código que no sea ésto

Quinta fase: Ensamblado final

 Tras comprobar que el flujo de parámetros es adecuado volvemos a la versión completa del programa y ya

(19)

Problemas habituales en los

CGIs (1)

 Las etapas sugeridas en el desarrollo del CGI muestran los posibles problemas:

 Problemas de permisos

 Los archivos o directorios no tienen los permisos adecuados.

 Verificarlo mediante “ls -l” en los directorios

 Debería ser drwxr-wr-x en ambos  chmod 755 para los directorios  Chmod 644 el programa perl

 Verificarlo pidiendo a alguien (de otra cuenta) que ejecute el script  Problemas de acceso (por ejemplo se hace la llamada a un directorio

distinto al que contiene el script)

 Probar con un cgi sencillo -que no pueda fallar- si el acceso está

garantizado

 Formularios mal elaborados

 Errores al producir el HTML desde el script

 Probar de enviarlo directamente desde el script y visualizarlo en el

navegador

perl miprograma.cgi > output.htmlfirefox output.html

(20)

Otros problemas comunes

 La primera línea del archivo tienen que ser:

#!/usr/bin/perl

– Antes incluso que otros componentes.

 No debemos olvidarnos de inviocar la funión

“print header(92

– Antes que cualquier llamada a print().

 En algunos sistemas el archivo tiene que

(21)

Enlaces interesantes

Introducción a la programación en perl

CGI y javascript

http://es.tldp.org/Tutoriales/PERL­CGI/perl­cgi­javascript/

CGI 101-Perl para la WWW

Referencias

Documento similar

¿Cómo se traduce la incorporación de ésta en la idea de museo?; ¿Es útil un museo si no puede concebirse como un proyecto cultural colectivo?; ¿Cómo puede ayudar el procomún

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

95 Los derechos de la personalidad siempre han estado en la mesa de debate, por la naturaleza de éstos. A este respecto se dice que “el hecho de ser catalogados como bienes de

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación