Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/03/2012, 14:12
fedexx
 
Fecha de Ingreso: mayo-2003
Ubicación: Mar del Plata
Mensajes: 373
Antigüedad: 21 años
Puntos: 0
Respuesta: Zend_Session y Zend_Auth logueado solo una vez.

Hola Vgator

Gracias nuevamente por responder.

Te cuento que he implementado Zend_Session_SaveHandler_DbTable y funciona correctamente, ya las sessiones se estan almacenando de forma satisfactoria en la tabla sessiones.

Para poder mantner solo una session por cada usuario logueado lo que hice fue agregar un campo mas a la tabla usuarios llamado session_id, alli guardare el id de la ultima session que autentico correctamente.

Cuando el usuario hace loguin desde otro sitio o otro navegador, reemplazo este campo por el nuevo id de la session, y el antiguo valor de la session lo utilizo para hacer un DELETE de la tabla sessions en la DB. De esta forma siempre queda logueado el usuario en un solo lugar y desconecta la anterior session reemplazandola por la ultima creada.

Aqui pego el trozo de codigo modificado en el Login

Código PHP:
//En $userInfo guardo todos los campos del usuario obtenidos de la DB
//luego de una autenticacion satisfactoria.
$userInfo $adapter->getResultRowObject();

//Id de la session actual
$id_session Zend_Session::getId();
                    
//Si existe una session anterior la eliminamos
if($userInfo->session_id != NULL){
    
$stmt $this->pdo->prepare("DELETE FROM sessions WHERE id=?");
    
$stmt->bindParam(1$userInfo->session_idPDO::PARAM_STR);
    
$stmt->execute();
}
                    
//Agregamos el nuevo identificador de la session
$stmt $this->pdo->prepare("UPDATE usuarios SET session_id=? WHERE id=?");
$stmt->bindParam(1$id_sessionPDO::PARAM_STR);
$stmt->bindParam(2$userInfo->idPDO::PARAM_INT);
$stmt->execute(); 
Tengo dos consultas sobre este tema:

Si uso la clase Zend_Session_SaveHandler_DbTable las sessiones pasan de almacenarse de la manera tradicional en php a usar las bases de datos? o se sigue haciendo uso del almacenamiento de archivos en el servidor para guardar las sessiones?

Cuando entro al sistema, sin loguearme, tambien se genera en la base de datos una nueva session. Si bien esta vacia se genera un nuevo registro con un nuevo id. Esto podria evitarse? es normal que se generen sessiones con usuarios Guests o desconocidos ?

Saludos y gracias!