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

Author: Clain Dsilva, 2010-01-05

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)
);
 34
Author: Cinnamon,
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:

Http://codeigniter.com/user_guide/libraries/sessions.html

 8
Author: Ãlvaro González,
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 /

 4
Author: shin,
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.

 1
Author: Brian Hammond,
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..!!
 1
Author: Clain Dsilva,
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