Sesiones de CodeIgniter vs sesiones de PHP
Soy relativamente nuevo en CodeIgniter y estoy haciendo mi primer proyecto de CI en el que hay cuentas de usuario, etc. En el pasado, siempre he usado la variable PHP _SESSION de PHP para este fin. Sin embargo, CI parece tener su propio mecanismo de sesión, que afirma que es "mejor"
El mecanismo de sesión de CI parece almacenar todos los datos en una cookie? Personalmente me gusta la idea de que todos los datos se almacenen en el servidor, a los que se accede con una clave de cookie como el mecanismo de sesión nativo de PHPs... Estoy siendo tonto pensando que es mejor? ¿DeberÃa aceptar el mecanismo de CI? ¿O deberÃa seguir adelante y usar sesiones nativas de PHP?
¿Qué hacen ustedes?
Gracias,
Mala
5 answers
En mi experiencia con CI he encontrado algunas anomalÃas con sus sesiones, pero para la mayorÃa de las necesidades del dÃa a dÃa la biblioteca es buena y fácil de trabajar. Como se señaló, Flashdata es una caracterÃstica muy agradable.
Si decide quedarse con las sesiones de CI, le sugiero encarecidamente que almacene las sesiones en una base de datos y, además, cifre las cookies:
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'sessions';
La estructura de la base de datos debe ser la siguiente:
CREATE TABLE IF NOT EXISTS `sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(16) DEFAULT '0' NOT NULL,
user_agent varchar(50) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id)
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-06 12:25:37
El manual dice más flexibilidad en lugar de mejor ;-)
Supongo que el principal beneficio de la clase de sesión CodeIgnite es que se integra con el marco y ofrece algunas funcionalidades adicionales, como el seguimiento de direcciones IP y lo que llama flashdata (datos de sesión que se borran tan pronto como se leen). Si está utilizando un marco en primer lugar, eso significa que estas opciones pueden ser atractivas para usted.
Lo que sea, también puede guardar la sesión datos en una base de datos:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-05 11:29:38
Mantenga la sesión PHP para información importante y use la sesión CI para información menos importante.
Lea aquà wyh. http://codeigniter.com/forums/viewthread/130577 /
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-05 14:30:17
Sé que este es un post anterior, pero siento que vale la pena compartir lo que he encontrado.
Dado que CI utiliza un enfoque basado en cookies ( incluso con almacenamiento de bases de datos), causa un problema para mi aplicación en particular que sirve datos a clientes remotos que solicitan datos a través de curl. La conclusión es que las cookies y Cross Site Scripting, aunque manejables, no funcionan bien juntas.
Elegà intentar anular la sesión nativa.clase php proporcionada por CI con mi propia MY_Session.php. Yo estaba feliz de encontrar esto no era demasiado difÃcil, pero me sorprendió encontrar que CI estaba regenerando el id de sesión a pesar de que mi script los proporcionaba explÃcitamente.
Según el manual de IC
El ID de sesión único del usuario (esta es una cadena estadÃsticamente aleatoria con entropÃa muy fuerte, hash con MD5 para portabilidad, y regenerado (por defecto) cada cinco minutos)
Aunque probablemente pueda encontrar una manera de anular esto, me pregunto si no serÃa mucho más fácil volver a las sesiones de PHP.
Solo alimento para pensar si vas a usar CI.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-07 12:02:06
CI sessions tiene limitaciones de tamaño de almacenamiento
Como sabe , las sesiones de CI son básicamente cookies, tanto si las cifra como si no. En lo que respecta a la seguridad, ambos tienen sus ventajas y desventajas.
Mi preocupación era el lÃmite de tamaño de las sesiones de CI, solo puede contener datos de 4 kb ya que básicamente es una cookie, mientras que la sesión PHP nativa solo almacena el id de referencia en la cookie y todos los datos de la sesión se almacenan en la memoria del servidor. Esto es útil cuando tiene un mayor número de artÃculos necesita ser almacenado en una sesión.
Digamos un carrito de compras con más artÃculos, o una lista de reproducción de música de usuario con más de 50 pistas... sucesivamente.
Espero que esta información ayude a alguien algún dÃa.
Salud..!!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-15 05:35:39