Inicio / Wikis / Monografías / Introducción a PHPLib, 2da parte - Manejo de sesiones

Introducción a PHPLib, 2da parte - Manejo de sesiones

Monografía creado por Ricardo Muñoz (rmunoz@tux.cl). Extraido de: http://www.tux.cl/doku.php?id=articulos:linux:el_kernel_de_linux
02 de Marzo de 2006

2 - Manejo de sesiones

El uso de sesiones es un método ampliamente extendido en muchos tipos de aplicación web. Básicamente una sesión es la secuencia de páginas que un usuario visita en un sitio web. Desde que entra en un sitio, hasta que lo abandona.

El término sesión en PHP, session en inglés, se aplica a esta secuencia de navegación, para ello crearemos un identificador único que asignamos a cada una de estas sesiones de navegación. A este identificador de sesión se le denomina, comúnmente, como la sesión.

El proceso de control de sesióen cualquier lenguaje de programación podría ser algo así:

  1. Existe una sesión?
  2. Si existe la retomamos
  3. Si no existe creamos una nueva
  4. Generar un identificador único

Para no perder el hilo de la navegación del usuario se debe asociar esta sesión a todas las URLs y acciones de formulario. Se podría crear una cookie que incluya el identificador de sesión, pero es bueno recordar que la disponibilidad o no de las cookies depende del navegador del usuario, y no es conveniente confiarse de lo que un usuario pueda o no tener habilitado.

Lo anterior es aplicable a cualquier lenguaje de programación como C, Perl, etc. En PHP4 tenemos la suerte de que toda la gestión de sesiones la hace el mismo PHP.

Uno de los usos principales de PHPLib era el manejo de sesiones en los tiempos del PHP3 ya que la versión 3 de PHP no tenía funciones para el manejo de sesiones. Esto cambio con la versión 4 de PHP, pero aún asi se sigue usando el PHPLib ya que ofrece flexibilidad y muchas más características avanzadas importantes.

2.1 La clase Session


La clase Session mantiene una lista de propiedades (variables de una clase) y provee de un conjunto de funciones para traer y guardar desde y hacia un contenedor de datos (storage container). Variables de Session

  • classname. El nombre de la clase.
  • magic. String secreto usado en la creación del ID. Se debe cambiar!!
  • mode. Modo de propagación del ID de Session. cookie o get.
  • fallback_mode. Modo de propagación del Session ID en caso de que $mode no funcione. Dejar $mode en cookie y $fallback_mode en get.
  • lifetime. Duración de la cookie en minutos. Si se deja en 0 quedan como cookies de sesión.
  • gc_time. Manejo de garbage collection.
  • gc_probability. Manejo de garbage collection.
  • allowcache. Control del cache de sesión de las páginas, si se deja en no (por defecto), la página no queda en cache bajo HTTP/1.1 o HTTP/1.0; si se deja en public, la página queda cache público bajo HTTP/1.1 y HTTP/1.0; si se deja en private, la página queda en cache privado bajo HTTP/1.1 y no es dejada en cache bajo HTTP/1.0.
  • allowcache_expires. Cantidad de minutos a permanecer en cache, cuando esta habilitado el caching.
  • that_class. Nombre de la clase que especifica nuestro contenedor de datos. Session usa esta clase para almacenar y obtener datos.
  • auto_init. Nombre de archivo a ser cargado al establecerse la sesión.
  • secure_auto_init. Se deja en 0, si todas las páginas siempre llaman a page_close().

Estas variables se configuran por cada clase de sesión y se dejan en el archivo local.inc o local4.inc. Ejemplo de una sub-clase de Session

class Prueba_Session extends Session {  var $classname = "Prueba_Session";   var $cookiename     = "Prueba";               por defecto mismo nombre que clase  var $magic          = "cambiaresto";          semilla del ID   var $mode           = "cookie";               los session ID se propagan con cookies  var $fallback_mode  = "";  var $lifetime       = ;                      0 = crear session cookies, sino minutos  var $that_class     = "Prueba_CT_Sql";        nombre del contenedor de datos  var $gc_probability = 5;  var $allowcache     = "no";}

2.2 Clase del contenedor de datos


La clase Session necesita de un “contenedor” donde serán almacenadas las variables de sesión. Este “contenedor” se indica en la variable $that_class. Por ejemplo

var $that_class     = "Prueba_CT_Sql";

luego se debe definir la sub-clase del contenedor:

class Prueba_CT_Sql extends CT_Sql {  var $database_class = "DB_prueba";       
A que base de datos conectarse...  var $database_table = "active_sessions";  y obtener información acerca de                                             las sesiones en esta tabla.}

Valora este capítulo:
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este monografía



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Introducción a PHPLib, 2da parte - Manejo de sesiones'

Cualquier aplicación web mediana o grande necesita manejar usuarios. En este artículo se mostrará el... Más »
Las sesiones nos permiten almacenar y consultar información sobre un visitante sin necesidad de estar... Más »
En la edición anterior, se explicó las bases de Netfilter/IPTables. En esta segunda entrega, se... Más »
Este es el Diccionario de Plantas Mágicas elaborado por nosotr@s. Esta basado en nuestra propia... Más »
PHPlib es un conjunto de clases que permiten de manera rápida y fácil manejar las... Más »
Autor y licencia de 'Introducción a PHPLib, 2da parte - Manejo de sesiones'
Ricardo Muñoz (rmunoz@tux.cl) Extraído de: http://www.tux.cl/doku.php?id=articulos:linux:el_kernel_de_linux CopyLeft
Copyleft 2000-2006 Tux.cl
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.
¿Estás seguro de que deseas eliminar este capítulo?