php codeigniter session redirect

php - Sesión perdida después de la redirección en Codeigniter



session redirect (10)

Me sorprendió al principio cuando encontré este problema. Me pasó porque mis datos de sesión tenían un signo @.

La solución es simplemente codificar los datos usando base64_encode.

P.ej:

$Data = urlencode( base64_encode($Email) ); $this->session->set_userdata(''Data'', $Data);

Y para reutilizarlo, simplemente haz esto:

$Data = base64_decode( urldecode( $this->session->userdata(''Data'') ) );

Espero que esto ayude.

Estoy usando codeigniter como marco.

En primer lugar, uso localhost pero cuando cambio a mi dirección IP, la función de inicio de sesión ya no funciona. Descubrí que la sesión se pierde después de redireccionar a otro controlador.

Aquí está el resultado de print_r($this->session->all_userdata());

[session_id] => 7b00fa0f8790f48d24446f9eb4e6aab2 [dirección_ip] => 10.42.68.71 [user_agent] => Mozilla / 5.0 (Windows NT 5.1) AppleWebKit / 537.1 (KHTML, como Gecko) Chrome / 21.0.1180.83 Safari / 537.1 [last_activity] => 1285962398 [user_data] =>

Como puede ver, no tiene datos pasados ​​a user_data pero se configuró antes de redirigir cuando realizo la prueba.

Separa el controlador a dos, el primero es usuarios -> controlador de la función de inicio de sesión y otro es planificador, que controlador del enlace que redirijo del controlador del usuario.

users.php (primer controlador):

$this->load->model(''users_model''); $this->load->model(''mymodel''); $this->load->database(); $email = $this->input->post(''email''); $pass = $this->input->post(''password''); $type = $this->input->post(''type''); // Authenticate the user $userdata = $this->users_model->auth_user($email,$pass,$type); if($userdata) { $data = array(''FIRSTNAME'' => $userdata->FIRSTNAME, ''LASTNAME'' => $userdata->LASTNAME, ''EMAIL'' => $userdata->EMAIL, ''LOGIN'' =>TRUE, ''TYPE'' => $type); $this->session->set_userdata($data); redirect(''planner/view_system'',''refresh''); }

planner.php (segundo controlador):

function __construct() { parent::__construct(); if ( ! ($this->session->userdata(''LOGIN''))) { print_r (var_dump($this->session->userdata(''FIRSTNAME''))); print_r($this->session->all_userdata()); } $this->load->helper(array(''form'',''html'',''url''));

Y aquí está mi configuración

$config[''sess_cookie_name''] = ''ci_session''; $config[''sess_expiration''] = 7200; $config[''sess_expire_on_close''] = FALSE; $config[''sess_encrypt_cookie''] = FALSE; $config[''sess_use_database''] = FALSE; $config[''sess_table_name''] = ''ci_sessions''; $config[''sess_match_ip''] = TRUE; $config[''sess_match_useragent''] = FALSE; $config[''sess_time_to_update''] = 300;


Mismo problema conmigo

Verifique que haya cargado la biblioteca de sesión en el controlador.

$this->load->library(''session'');


En primer lugar, debe asegurarse de que no haya caracteres especiales en los elementos de la sesión como ''/ n'' o ''/ v''. Esos personajes pueden llevar tu cuerda a romperse en el medio. Pruebe trim () para obtener ayuda.

Si eso no sirve, tal vez se trate de algún problema de codificación. Intente encriptar el elemento de la sesión antes de configurarlo, y descifrelo cuando necesite usarlo.


En mi caso, después de algunas pruebas (con https y http en localhost) el error viene para ese problema y no se ha configurado correctamente $ config [''cookie_secure''], por lo que puedes intentar cambiar en config.php:

$config[''cookie_secure''] = FALSE; // if is not under https, or true if you use https

¡Aclamaciones!


Resolví este problema configurando $ config [''cookie_domain''] en localhost

$config[''cookie_domain''] = "localhost";

Inicialmente tenía esa variable configurada en un nombre de dominio completamente calificado como www.exampledomain.com pero mientras tanto estaba usando un servidor local.

El dominio en el que se ejecuta el script debe ser el mismo que el del conjunto de dominios bajo $ config [''cookie_domain] para evitar fallas inesperadas con la clase de sesión codeigniter.


Desde mi experiencia, los problemas pueden ser:

  1. uno (o más) de sus archivos no es ''UTF-8 con BOM'' (si su sitio web no es solo inglés y usa UTF-8 como codificación como la mía). Debe cambiar todos los archivos a ''UTF-8 con BOM''. Notepad ++ te ayudará.
  2. hay algunos caracteres antes de la etiqueta php o después?> (¿mejor toma?> fuera). Asegúrese de que no haya ningún espacio que incluya espacios.
  3. Cuando llame a localhost / xxxxxx como la dirección, cámbielo a 127.0.0.1/xxxxxx o su LAN IP
  4. Siempre almaceno sesiones en DB en vez de archivo (más fácil para la depuración).

Tengo un problema similar, y resultó que ese problema es muy común ...

la raíz del mal de mis problemas fueron los nombres que contienen el carácter "_"

ejemplo, antes era

$this->session->set_flashdata(''message_success'', ''some message'');

después se convirtió

$this->session->set_flashdata(''messagesuccess'', ''some message'');

Mi problema resuelto Gracias hombre con este recurso http://biostall.com/losing-codeigniter-sessions/


Por favor revisa tus enlaces y asegúrate de que estén escritos correctamente. Al escribir URL absolutas, asegúrese de agregar la parte ''www''. Este fue el problema en mi caso. Espero que esto ayude a alguien.

Bueno: encabezado ("Ubicación: http://www.sudominio.com/controller/page ");

Malo (rompe su sesión): encabezado ("Ubicación: http://sudominio.com/controller/page ");


Sesión perdida después de la redirección en Codeigniter

Encontré el problema también.

Aún encontraste el problema. Tenga en cuenta la dirección de la sesión del codeigniter. Cuando su navegador visitó su sitio web y actualizó algunas veces, codeigniter generó más archivos de sesión bajo la dirección de sesión del codeigniter.

Usted devuelve la sesión de la biblioteca de carga en su archivo de controlador.

Consulte la siguiente configuración config.php.

Cuando cambie la configuración aproximada, elimine o borre todos los datos fuera de línea de su navegador y todas las sesiones del archivo codeigniter. Entonces intentas hacer de nuevo. Es tal vez reparar el problema.

Si aún no puede reparar el problema. Puede descargar el paquete codeigniter de codeigniter.org nuevamente y luego extraer el paquete para probar el entorno.


Debe agregar una cosa a su archivo autoload.php .

$autoload[''libraries''] = array(''database'',''session'');

esto resolverá el problema de redirección de la sesión