Hola
GatorV
Parece que no es un tema tan recurrido por el cual consulto!
Ayer estuve leyendo bastante sobre lo que quiero hacer, ademas ahora leo tu respuesta y coincide totalmente,
voy a tener que usar bases de datos para poder llevar un control mas preciso de las sessiones en el sistema. Ademas lei que:
-Son un poco peligrosas a la hora de usarlas en un shared Host, debido a que los archivos de sessiones almacenados por php pueden ser vistos por cualquiera que tenga acceso al directorio donde los guardo.
-Es muy facil de lograr robo de identidades mediante hijacking...
Entonces como me comentas, para agregar un poco de seguridad seria bueno cambiar el directorio donde guardo las sessiones y podria tomar en cuenta el ip desde donde se inicia la session como para compararlo en cada ejecucion de la aplicacion.
Lei que existe la clase Zend_Session_SaveHandler_DbTable. Mediante parametros le indico a esta en que tabla guardo la informacion y zend se encarga de ir almacenandolo automaticamente.
Segun la siguiente documentacion
http://framework.zend.com/wiki/displ...andler_DbTable deberia crear una tabla en la DB
Código:
CREATE TABLE `Sessions` (
`id` varchar(32) NOT NULL,
`modified` int(11) default NULL,
`lifetime` int(11) default NULL,
`data` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
y implementarla de la siguiente manera:
Código PHP:
<?php
//This is in your bootstrap, note you can also use Zend_Config in the constructor
$config = array(
'name' => 'session', //table name as per Zend_Db_Table
'primary' => 'Session_ID', //the sessionID given by php
'modifiedColumn' => 'modified', //time the session should expire
'dataColumn' => 'Session_data', //serialized data
'lifetimeColumn' => 'lifetime' //end of life for a specific record
);
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
Zend_Session::start();
?>
Mi duda es la siguiente, si bien hago uso de sessiones en ningun momento hago un Zend_Session::start(); en mi codigo... esto deberia ir apenas inicializo mi aplicacion? Ademas para saber rapidamente si un usuario tiene una session abierta deberia crear un campo en la tabla usuarios llamado por ejemplo "session_id" donde guarde el id de la session creada?
Gracias de antemano por el tiempo y la experiencia que comparten!