[Php-avanzado] duda ejemplo sesiones

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mie Ene 29 09:39:52 ART 2014


Hola Maximiliano,

El mié, 29-01-2014 a las 10:09 -0200, Maximiliano Lizondo escribió:
> Hola Leo, estoy probando el ejemplo del manejador de sesiones con
> mysql. El código del manual es el siguiente:
> 
> 
> <?php
> class Session
> {
> 
>     /**
>      * a database connection resource
>      * @var resource
>      */
>     private $_sess_db;
> 
>     /**
>      * Open the session
>      * @return bool
>      */
[..]
> // below sample main
> 
> session_start();
> session_regenerate_id(true);
> 
> if (isset($_SESSION['counter'])) {
>     $_SESSION['counter']++;
> } else {
>     $_SESSION['counter'] = 1;
> }
> 
> ?>
> 
> 
> Dudas:
> 
> 
> 1- Suponiendo que yo tengo una base de datos creada, con una tabla de
> usuarios con nombres de usuarios y passwords, ¿debo armar otra tabla
> para almacenar los datos de las sesiones, cierto? o debo armar otra
> base de datos distinta para las sesiones?

	Da lo mismo, pero en general es mejor tener todas las tablas de un
software en la misma base de datos, por una cuestión de organización y
de mantener un solo punto de acceso a la información almacenada.


> 2- Solo con incluir el script con el manejador de sesiones y escribir
> "session_start();" en mi script php alcanza para que php se encargue
> de las sesiones de manera transparente al usuario?

	Sí. Tené en cuenta que en este punto, el "usuario" es el programador y
no quién use el software.

> 2- No entiendo cómo puedo aplicar este ejemplo a mi trabajo final, en
> el cual ya tengo la base de datos y la tabla de usuarios autorizados
> para ingresar al sistema. Me podrías encaminar un poco con eso?

	Estás mezclando cosas y por eso te confundiste!
	Las sesiones, ya sea guardadas como lo hace PHP o usando tu propio
manejador de sesiones que las guarde en MySQL, solo te darán
persistencia.
	El trabajo de AAA, es decir, el de validar al usuario, el de
restringirle el acceso según corresponda y el de mantenerle los datos de
su cuenta, es completamente independiente y no está provisto por ningún
manejador de sesiones.
	La sesión te sirve para determinar que la petición que se recibe,
proviene de una de las muchas instancias posibles: con la información de
esa instancia, que está almacenada en la sesión (por ejemplo el nombre
de usuario y contraseña guardados) lo que tu implementación de AAA hace
es verificar que sea un usuario válido y verificar si tiene acceso o no
a una funcionalidad determinada.

	Volviendo a las sesiones, como PHP hace que la implementación sea
transparente para el programador, generalmente se usa el manejador de
sesiones como viene, y si por algún motivo (cantidad de usuarios
concurrentes, distribución en varios servidores, replicación, etc) hace
falta cambiarlo, se lo cambia vía session_set_save_handler() sin que
esto afecte al resto del código.

	Saludos!


-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado