La clase de sesión CodeIgniter no funciona en Chrome

He creado un sistema de inicio de sesión en el proyecto codeigniter, que funciona bien en Firefox pero no funciona en Chrome, recolección de datos y configurada para la sesión, pero cuando este código redirige el control a admin / dashboard, allí verificamos nuevamente los datos de la sesión. Si los datos de la sesión no existen, entonces el código redireccionará al usuario para iniciar sesión de nuevo ………… Mi código está debajo, y no sé qué está mal con esta sesión / cookies en codeigniter.

$data = array( 'user_id' => $user->id, 'name' => $user->name, 'user_type' => $user->type, 'username' => $user->username, 'is_logged_in' => true ); $this->session->set_userdata($data); //echo "user ".$this->session->userdata("username"); exit; redirect("admin/dashboard", "location"); 

Tengo mucha búsqueda pero nadie funciona en esta situación, como un cambio ” cookie_domain ” en el archivo de configuración, pero no pasó nada ….

También me he enfrentado a esta situación y la solucioné al boost el vencimiento de la sesión a un día.

ACTUALIZAR

¿Por qué funciona al extender la caducidad de la sesión?

Este problema se produce debido a la diferencia entre las zonas horarias del usuario y la ubicación del servidor web. Por ejemplo, vivo en Pakistán, 10 horas antes de la zona horaria de EE. UU. Y mi servidor está en EE. UU. Solicito la página el 17/10/2012 14:00 a la hora de Pakistán. La hora en EE. UU. Es el 17/10/2012 a las 4:00 desde que el servidor web está en EE. UU. Y el vencimiento de la sesión se establece en 2 horas. La cookie enviada por el servidor caducará el 17/10/2012 a las 6:00. Ahora el navegador interactúa con la hora de su PC local y recibe el tiempo 17/10/2012 a las 14:00, por lo que elimina la cookie o su cookie siempre se actualiza en su solicitud. Por lo tanto, es mejor establecer la caducidad de la sesión en 1 día porque la mayor diferencia en la zona horaria es de 17 horas entre Nueva Zelanda y EE. UU. (No estoy seguro de si la diferencia puede ser incorrecta). Entonces tu cookie al menos se mantendrá con vida por 7 horas

solo para agregar mi experiencia, estoy usando Codeigniter 2.1.4,

Problema: las sesiones en Chrome no duraron más de un par de minutos, o se cerraron la sesión mientras se realizaban las solicitudes de Ajax. Probé varios enfoques: (cambiado sess_cookie_name, longer sess_expiration time).

Acabo de descubrir que establecer sess_encrypt_cookie en FALSE solucionó el problema de cierre de sesión de Chrome.

$config['sess_encrypt_cookie'] = FALSE;

No estoy seguro de por qué, tal vez el problema de longitud de cookie en Chrome (hasta donde sé, el cifrado aumenta mucho la longitud de una cadena).

Sé que el cifrado agrega un nivel adicional de seguridad, pero por lo que he leído, los datos almacenados en la cookie no son confidenciales.

¡Espero eso ayude!

Cambié el param del sess_match_useragent a falso en el config.php

 $config['sess_match_useragent'] = FALSE; 

Y el problema con Google Chrome fue resuelto.

¿Ha comprobado que está almacenando sesión durante más tiempo y no se destruye temprano? O puede ser que tenga que ver con la configuración de Chrome para aceptar datos de sesión y cookies, ya que no hay código en codeigniter que funcione en Firefox y no funcionará en Chrome. También asegúrese de cargar automáticamente su biblioteca de “sesión”.

respuesta perfecta por Shayan Husaini tuve el mismo problema y lo resolví cambiando

 $config['sess_expiration'] = 8600; 

que es segundos en 24 horas, fueron segundos en 2 horas

 $config['sess_expiration'] = 7200; 

Vivo en Pakistán y uso el servidor de EE. UU., Por lo que aparece este problema.

Gracias Shayan fue de gran ayuda.

Encontré el mismo problema y finalmente logré resolverlo actualizando la tabla de base de datos de sesiones con la estructura sql de la última versión de Codeigniter en este momento, versión 2.1.4.

  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, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`) ); 

También tenga en cuenta que si tiene varias bases de datos configuradas en config / database.php, la tabla de sesión utiliza la tabla de sesión del databse de la configuración predeterminada.

Resuelto, CodeIgniter tiene algún problema si el dominio especificado para las cookies es localhost, he establecido un dominio falso con la estructura de un nombre de dominio real en el archivo de hosts y funciona.

Sé que esta es una respuesta tardía, pero si está buscando una buena solución aquí está: use este código como código de cierre de sesión:

 $this->session->sess_destroy(); 

Esto asegurará la eliminación de la sesión “ci_session”, que es la razón principal por la que no se puede guardar una nueva sesión, espero que ayude