CodeIgniter: Fix para la pérdida de sesiones causada por Ajax

Trabajando en un nuevo proyecto en CodeIgniter me he encontrado que a la hora de guardar las sesiones en la BD, éstas perdían toda la información que había almacenado en ellas al cambiar de controlador y realizar peticiones Ajax simultáneas.

La solución la encontré en el repositorio de CodeIgniter. Por lo que vi, es un bug que llevan arrastrando ya desde varias versiones atrás y bastante común entre los desarrolladores de CI.

Para solventar el problema, por ahora, hay que remplazar “system/libraries/Session.php” por esta otra Areson CI Session.php y guardar la tabla de sesiones con el siguiente script SQL:

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(45) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    prevent_update int(10) DEFAULT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

Más info:
Enable simultaneous AJAX requests to work with sessions

Etiquedado como

Deja un comentario

Tu dirección de correo electrónico no será publicada.