Skip to content
Home » ADOdb y las sesiones

ADOdb y las sesiones

Otra de las utilidades que presenta ADOdb es la gestión de sesiones a través de base de datos. Hasta el momento, en cuanto a flexibilidad y potencia (http://phplens.com/phpeverywhere/node/view/39), supera a su equivalente de PEAR -no cabe duda de que PEAR tiene un conjunto de librerías extremadamente útiles-, ya que la librería de PEAR no es capaz de gestionar sesiones con Oracle -algunos recriminan a ADOdb la poca elegancia del código, sin embargo, creo que no estamos ante un concurso literario, la informática está para resolver problemas, no para crearlos, es decir, la informática y la programación como parte de esta, es un medio, no un fin (al menos así lo vemos los que practicamos el intrusismo).

La implementación de sesiones con ADOdb, dentro de una arquitectura racional resulta muy simple. Además de resultar sencilla y rápida su implementación, ADOdb tiene varios sistemas de gestión de sesiones, tanto encriptadas (cryptsession), como el caso especial de campos CLOB para Oracle (session-clob), cosa que actualmente Pear::DB no soporta, como ya he comentado.

Los pasos para su implementación son muy pocos:

1. Crear una tabla donde se almacenarán las sesiones (por ejemplo):

CREATE TABLE "public"."sessions" (
  "sesskey" CHAR(32) NOT NULL, 
  "expiry" INTEGER NOT NULL, 
  "expireref" VARCHAR(64), 
  "data" TEXT NOT NULL, 
  CONSTRAINT "sessions_pkey" PRIMARY KEY("sesskey")
);

2. En el archivo de configuración del sitio añadir las siguientes líneas:

include ([pathtoadodb] . '/session/adodb-session.php');

$ADODB_SESSION_DRIVER='[postgres7]'; #El nombre del driver
$ADODB_SESSION_CONNECT='localhost'; #El servidor que contiene la db
$ADODB_SESSION_USER =''; #El nombre de usuario
$ADODB_SESSION_PWD =''; #La clave
$ADODB_SESSION_DB =''; #Nombre de la db
$ADODB_SESSION_TBL = 'sessions'; #Nombre de la Tabla

Las últimas incorporaciones de ADOdb, también contemplan aspectos relacionados con la seguridad, como es el caso de la creación de una nueva sesión, conservando los valores de la sesión previa, esta función que en php es ‘session_regenerate_id()‘ tiene su equivalente en ADOdb ‘adodb_session_regenerate_id()‘.

Más detalles sobre ADOdb y la gestión de sesiones en http://phplens.com/lens/adodb/docs-session.htm y el artículo http://phplens.com/phpeverywhere/?q=node/view/163