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_id, PDO::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_session, PDO::PARAM_STR);
$stmt->bindParam(2, $userInfo->id, PDO::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!