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.




 
 

 
PHP

Doctrine2 – Getting Started Issues

Luego de querer instalar y hacer funcionar doctrine en nuestro querido y amado Windows, me encontré con un par de problemas, y por lo que vi en internet a varios le paso lo mismo, vamos a tomar como ejemplo el Doctrine –...
by AgeValed
1

 
 

PHP Conference Argentina 2013

El 4 y 5 de Octubre se celebrará, en la Ciudad de Buenos Aires (Argentina), la PHP Conference Argentina, edición local de la conferencia PHP más popular. Esta edición no solamente está destinada a los programadores PHP, ...
by AgeValed
0

 
 

PHP 5.4.0 liberado!

Les comento que ya se encuentra la nueva versión de PHP liberada, la versión 5.4.0, luego de varios updates que se hicieron a la versión PHP 5.3 ya contamos con nuevas versión que incluye (según ellos) un gran núme...
by AgeValed
0

 

 
PHP

Zend Framework – Zend_Translate + Zend_Route

Les quiero compartir algo que estaba necesitando para un sitio web que estoy creando, y estuve peleando bastante para que funcione todo perfecto. Primero que nada quiero agradecer a Jon Lebensold con la Introducción a Zend...
by AgeValed
12

 
 

Habemus Google+ API

Luego de esperar un par de meses, y una larga espera, Google decidió hacer publica la primera releace de la API de Google+, es algo que estaba esperando desde el primer día, antes de empezar a ver bien todo lo que se puede h...
by AgeValed
2

 




0 Comentarios


Be the first to comment!


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.