Next Previous Contents

7. Migración de pgsql a Perl Embedido

En los artículos anteriores se ha desarrollado el acceso a una base de datos utilizando un preprocesador específico para PostgreSQL que permitía desarrollar intérpretes CGI rápidamente con los que acceder a la base de datos. Sin embargo este acercamiento no esta exento de problemas, algunos de los cuales ya se introdujeron en artículos previos, y que pueden concretarse en:

Estos problemas van a poder ser solventados, pero no sin antes un esfuerzo adicional de programación para contemplarlos y una reimplementación haciendo uso de Perl embedido. Una vez hecha, sin embargo, la reimplementación, la disponibilidad de un gran número de módulos de Perl para las más diversas tareas (envío de correos electrónicos, acceso a ficheros...) así como la integración con el servidor de Apache para la gestión, por ejemplo, de cookies o de sesiones, nos permitirán poder abrir nuevos campos de aplicación al interfaz ya realizado.

Otra ventaja, además, es que podremos coger consultas implementadas en Perl embedido y, con mínimos esfuerzo, convertirlas en programas interpretados escritos en Perl que se ejecuten en el servidor. Esto va a permitir, si fuera necesario, convertir el tratamiento dinámico de la información en estático, si fuera necesario.

7.1 Consulta de datos con Perl embedido

************** LISTADO 2 ****************************+

Como se puede ver en el listado 2, el acceso a las funciones de Perl embedido permiten programa muchas características dentro de una página. Vamos a tomar dicho listado como la base de un ejemplo para ver cómo se haría la migración de las distintas consultas y formularios de introducción de datos en este lenguaje, analizándolo por completo.

En primer lugar se puede ver que el primer bloque hace que se carguen los distintos módulos que van a ser utilizados por el intérprete, de particular interés serán DBI, ya comentado, y CGI::Cookie, que permitirá acceder a las cookies que el usuario envíe al servidor. Estas cookies, como ya se comentó en artículos anteriores son las que se van a utilizar para identificar si el usuario ha sido autenticado.

Posteriormente, se hace la conexión con la base de datos, utilizando la función correspondiente del módulo DBI, preservando en variables la posibilidad o no de haber realizado la conexión. Esto va a permitir que, a continuación se puedan tratar los casos de fallo de conexión a la base de datos.

Como se puede ver en el bloque if se pueden, dentro de una misma página introducir información que se va a mostrar en función de las acciones tomadas anteriormente. Este bloque permite mostrar una página determinada (en realidad va a reenviar al usuario con un refresh a la página en cuestión) en el caso de que no se haya podido establecer la conexión a la base de datos. Los siguientes bloques se evaluarán sólo en el caso de que la conexión haya sido exitosa, ya que, de no serlo, el intérprete saltará al bloque endif correspondiente.

A continuación se evalúa si la cookie del usuario corresponde con una válida, utilizando el valor de ésta para realizar una consulta a la base de datos que nos indicará si está accediendo un usuario autorizado.

En el caso de que no lo sea, hay un nuevo error que le indicará al usuario que no pertenece a la base de datos y deberá autenticarse. Si lo es, se llegará a la construcción de la consulta que será realizada en la base de datos, en este caso un listado de Antiguos Alumnos.

Se utiliza Perl embedido para procesar la consulta a través del interfaz DBI, y para mostrar la lista de columnas recibidas dentro de una tabla. En el caso de que no haya datos se muestra un mensaje explicativo indicando la razón.

Asimismo se pueden introducir en una misma página tres páginas distintas que serán mostradas en función de las condiciones de ejecución del programa.

7.2 Autenticación de usuarios con Perl embedido

************** LISTADO 3 ***************************

Finalmente, como ejemplo más complejo se puede consultar el listado 3. Éste sería el correspondiente a la página de acceso al servidor, que, como se puede ver es dinámica.

En dicha página está incluido el formulario de entrada de datos del usuario, la comprobación de los datos en sí, y los mensajes de aceptación y rechazo correspondientes. Como se puede ver se puede hacer de golpe todas estas operaciones sin tener que necesitar distintas páginas separadas que sí eran necesarias en el caso de pgsql.

Se deja, por limitaciones de espacion, como ejercicio al lector el determinar el exacto funcionamiento de este programa.


Next Previous Contents