Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/03/2012, 06:00
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 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!