

















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
En este documento se presenta un tutorial sobre cómo procesar formularios CGI en Perl y crear scripts que envíen correo. El tutorial explica cómo leer y procesar datos de formularios, crear archivos de bloqueo, manejar errores y enviar correos electrónicos. Se incluyen ejemplos prácticos de código Perl.
Tipo: Monografías, Ensayos
1 / 25
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
El CGI ( Common Gateway Interface ) es un estandar para comunicar aplicaciones externas con los servidores de información, tales como servidores HTTP o Web. Un documento en HTML que el daemon del Web se trae es estático, es decir, se mantiene constante: un fichero de texto que no cambia. Un programa CGI, por otro lado es ejecutado en tiempo real, así que puede generar información dinámica.
Por ejemplo, supongamos que quieres enganchar tu base de datos de Unix al WWW, para permitir a gente de todo el mundo consultarla. Básicamente se necesitará un programa CGI que el daemon del Web ejecutará para transmitir la información al gestor de base de datos, y recibir los resultados para presentarselos al cliente. Este es un ejemplo de pasarela ( gateway ), y es lo que CGI, actualmente en su versión 1.1, tiene en sus orígenes.
El ejemplo de la base de datos es una idea sencilla, pero la mayoría de las veces dificil de implementar. Realmente no hay límite con lo que tu quieras enganchar al Web. La íunica cosa que debes recordar es que haga lo que haga tu progrma CGI, no deberá tardar mucho tiempo en procesar. De otra manera, el usuario estaría esperando con su navegador a que algo pase.
Como un programa CGI es un ejecutable, es equivalente a dejar a el mundo ejecutar un programa en tu sistema, que no es lo mas seguro a hacer. Por ello existen una serie de precauciones de seguridad que son necesarias de implementar cuando se usan programas CGI. Probablemente la que afectará al usuario típico del Web , es que hecho de que los programas CGI necesitan residir en un directorio especial, así el servidor sabe que tiene que ejecutarlo, en vez de simplemente mostrarlo por pantalla. Este directorio está generalmente bajo el control del webmaster , prohibiendo al usuario medio crear programas CGI. Hay otros métodos para permitir el accesos a scripts CGI, pero depende del webmaster que se te de esta posibilidad. Así que deberás contactar con tu webmaster para consultar la factibilidad de permitirte un acceso a los CGI.
Si dispones de una versión del servidor HTTPd NCSA , verás un directorio denominado /cgi-bin. Este es el directorio especial antes mencionado, donde todos los programas CGI residen. Un programa CGI se puede escribir en cualquier lenguaje que permita ser ejecutado en el sistema, como:
C/C++ Fortran PERL TCL Algún Shell de Unix Visual Basic AppleScript
Simplemente depende de lo que tengas en tu sistema. Si usas un lenguaje de programación como C o Fortran , como ya sabrás, debes compilar el programa antes de
El servidor usa tanto de líneas de comando, como variables de entorno para pasar los datos del servidor al script.
Estas variables de entorno se activan cuando el programa ejecuta el programa cgi.
Especificación
Las siguientes variables no dependen de la información enviada y son activadas en todos los casos:
SERVER_SOFTWARE
Devuelve el nombre y la versión del software del servidor de información que contesta la petición de usuario (y ejecuta el programa cgi). Formato: nombre/versión.
Devuelve nombre de host del servidor, el alias DNS, o la dirección IP como aparecería en las URL autoreferenciadas.
GATEWAY_INTERFACE
Devuelve la revisión de la especificación CGI con que el servidor puede trabajar. Formato: CGI/revisión.
Las siguientes variables de entorno son específicas de la petición de usuario, y es el programa del gateway el que las da el valor:
SERVER_PROTOCOL
Da el nombre y revisión del protocolo de información con el que la peticion de usuario viene. Formato: protocolo/revisión. SERVER_PORT
Devuelve el número de puerto por el cual fue enviada la petición.
REQUEST_METHOD
Devuelve el método por el cual la petición fue enviada. Para HTTP serán "GET", "HEAD", "POST", etc.
PATH_INFO
La información extra sobre el path , tal como es dada por el cliente. En otras palabras, podemos acceder a los scripts por su pathname virtual, seguido de alguna
información extra. Esa información extra es enviada como PATH_INFO. La información será decodificada por el servidor si viene de una URL antes de pasarla al script CGI.
PATH_TRANSLATED
El servidor proporciona una versión traducida del PATH_INFO, que transforma el path virtual al físico.
SCRIPT_NAME
Path virtual al script que va a ejecutar, usado para autoreferenciar URL.
QUERY_STRING
La información que sigue al signo ‘?’ en la URL que referencia al script. Es la información de la pregunta. No deberá ser decodificada de ningún modo. Esta variable será activada cuando hay una petición de información, sin hacer caso de la decodificación de la línea de comandos.
REMOTE_HOST
El nombre de host que realiza la petición. Si el servidor no posee esta información activará REMOTE_ADDR y dejará esta desactivada.
REMOTE_ADDR
La dirección IP del host remoto que realiza la petición.
AUTH_TYPE
Si el servidor soporta autentificación de usuario , y el script está protegido, esta es el método de autentificación específico del protocolo para validar el usuario.
REMOTE_USER
Si el servidor soporta autentificación de usuario , y el script está protegido, este será el nombre de usuario con el que se ha autentificado.
REMOTE_IDENT
Si el servidor HTTP soporta autentificación RFC 931 , entonces está variable se activará con el nombre del usuario remoto obtenido por el servidor. Esta varible solo se utilizará durante el login.
CONTENT_TYPE
Para peticiones que tienen información añadida, como HTTP POST y PUT, este será el tipo de datos contenido.
seleccionado. (Los usuarios también pueden enviar ficheros con los formularios, pero no nos ocuparemos de ello.)
Estos pares nombre-valor llegan como una larga cadena que necesitamos formatear. No es muy complicado, hay una gran cantidad de rutinas que lo hacen por tí. En el directorio CGI de Yahoo encontrarás unas cuantas en varios lenguajes.
Si aun así prefiere hacerlo usted mismo, aquí esta el formato de la cadena:
“nombre1=valor1&nombre2=valor2&nombre3=valor3”
Así que sólo hay que dividir donde están los signos ‘&’ y ‘=’, y luego hacer dos cosas a cada nombre y valor:
1.Convertir todos los signos ‘+’ a espacios. 2.Convertir todas las secuencias ‘%xx’ al valor del carácter cuyo valor ASCII sea ‘xx’ en hexadecimal. Por ejemplo convertir ‘%3d’ a ‘=’.
Esto se hace necesario porque la larga cadena original esta codificada según el código URL, para permitir los signos ‘&’, ‘=’, y todo lo que el usuario introduzca.
Pero, ¿de donde se obtiene la cadena de entrada? Esto dependerá del método por el cual el formulario haya sido enviado:
Para los envíos con GET, será la variable de entorno QUERY_STRING. Para los envíos con POST, habrá que leer del STDIN. El número exacto de bytes a leer estará en la variable de entorno CONTENT_LENGTH.
Primero, escribir la linea
Content-Type: text/html
más otra línea en blanco en el STDOUT. Después, escribiremos nuestra pagina de respuesta en HTML al STDOUT, y será enviada al usuario cuando el script esté ejecutado.
Sí, estamos generando código en HTML en tiempo real. No es difícil, si no más bien directo. El código HTML fue diseñado lo suficientemente simple para poder ser generado por este método.
En este apartado vamos a guardar los datos escritos por el usuario en un archivo para poder recuperarlos posteriormente. Como ejemplo utilizaremos un formulario para
/users/jperez/www/tutor/chiste.txt
Para abrir el fichero para añadir al final usaremos el comando de perl para abrir ficheros, que tiene la siguiente sintaxis:
open(FILEHANDLE,">>nombrearchivo");
FILEHANDLE es como llamaremos al archivo mientras esté abierto. Es similar a una variable. Nombrearchivo es el archivo a abrir. Los signos ‘mayor’ (>>) son importantes, y como en el shell indican ‘añadir a un fichero’.
Así la orden de apertura quedará así:
open(CHISTE,">>/users/jperez/www/tutor/chiste.txt");
Nota: Es aconsejable usar letras mayúsculas para FILEHANDLE para ayudar a distinguirlo de las variables.
Escribir a un fichero es idéntico a como hicimos previamente. La única diferencia es que el FILEHANDLE es el primer argumento de la sentencia print, y está separado de lo que será imprimido por un espacio. Por ejemplo para escribir la linea “Las rosas son rojas” al FILEHANDLE CHISTE, escribiremos:
print CHISTE "Las rosas son rojas\n";
Escribir variables se realiza de la misma manera:
print CHISTE "Las rosas son ",$in{'colorrosas'},"\n";
El código para nuestro ejemplo necesitará escribir al archivo:
El código es el siguiente:
print CHISTE "Nombre: ",$in{'nombre'},"\n"; print CHISTE "\n"; print CHISTE $in{'chiste'},"\n"; print CHISTE "--------------------------------------------------\n";
Ahora solo nos queda cerrar el fichero, y esto lo hacemos con el comando:
close FILEHANDLE;
En este apartado crearemos un libro de visitas sencillito. Durante el proceso de realización, haremos bastantes cosas de forma ordenada.
Última modificación 21/9/