Programación

10/07/2013

Zend Framework – Almacenamiento de sesión en base de datos

En este mini tutorial voy a mostrarles como guardar la sesión en base de datos con ZF 1, esto es muy util para manejo de sesiones en un entorno con múltiples servidores.

Material Relacionado

Crear una tabla en la base de datos

Debemos tener en la DB una tabla la cual almacene los datos de sesión.

      CREATE TABLE `session` (
        `id` char(32),
        `modified` int,
        `lifetime` int,
        `data` text,
        PRIMARY KEY (`id`)
      );

Iniciar una sesión en saveHandler application.ini

Acá se definen todos los paramentos los de la base de datos y de sesión.

# Database
 resources.db.adapter = "Pdo_Mysql"
 resources.db.params.host = "localhost"
 resources.db.params.username = "webuser"
 resources.db.params.password = "XXXX"
 resources.db.params.dbname = "test"
 resources.db.isDefaultTableAdapter = true

# Session
 resources.session.use_only_cookies = true
 resources.session.gc_maxlifetime = 864000
 resources.session.remember_me_seconds = 864000

 resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"

 resources.session.saveHandler.options.name = "session"
 resources.session.saveHandler.options.primary = "id"
 resources.session.saveHandler.options.modifiedColumn = "modified"
 resources.session.saveHandler.options.dataColumn = "data"
 resources.session.saveHandler.options.lifetimeColumn = "lifetime"

Iniciamos la sesión en la clase bootstrap

Se necesita agregar el siguiente método en el bootstrap.

/** 
 * Start session 
 */  
public function _initCoreSession()  
{  
    $this->bootstrap('db');  
    $this->bootstrap('session');  
    Zend_Session::start();  
}

Guardar y obtener los valores de sesión

Se puede obtener y guardar los valores de sesion de la siguiente manera!

class IndexController extends Zend_Controller_Action  
{  
    public function indexAction()  
    {  
        // default namespace  
        $namespace = new Zend_Session_Namespace();  
        $namespace->foo = 100;  // Save Value
        echo $namespace->foo;   // Get Value
        // mySpace namespace  
        $namespace = new Zend_Session_Namespace('mySpace');  
        $namespace->foo = 100;  // Save Value
        echo $namespace->foo;   // Get Value
        // action body  
    }  
}

Fuente: http://dionysus.uraganov.net/frameworks/zend-framework-storing-session-in-database/



About the Author

AgeValed
Pablo Ignacio de la Vega Ibañez, también conocido en algunos lugares como AgeValed, el creador de este blog. Actualmente estoy trabajando como Líder Técnico y Supervisor de Equipo en el área de desarrollo PHP.




 
 




0 Comentarios


Be the first to comment!


Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.