Sesiones en Codeigniter: Problemas al usarlas? Usar sesiones nativas php

Enviado por Carxl el Mié, 09/01/2010 - 17:18.

Por qué usar sesiones nativas php ($_SESSION) en lugar de las sesiones propias de Codeigniter.

Cuando comencé a usar CI, tuve un inconveniente que tomó cierto tiempo resolver. Busqué en la página oficial, foros y diversas páginas, cada una dando su solución respectiva.

La premisa

El proyecto requería tener n cantidad de variables de sesión con x cantidad de información cada una.

El problema

CI usa cookies para guardar las variables de sesión (tal cual, CI no usa la variable global $_SESSION de php), y según he leído, dicha cookie soporta sólo 4Kb de peso.

Dicha información que necesitaba manejar sobrepasaba ese peso por lo que la info se perdía y no lograba obtenerla de ninguna manera. Además, la idea de crear cookies para manejar información propia de la aplicación desde el lado del cliente no me agrada ¬¬.

La solución

Usar la clase Native_Session de Codeigniter.

Esta clase reescribe los métodos de la clase session propia de CodeIgniter para poder usar las sesiones nativas de php.

La instalación es sencilla: descargar la librería y seguir los pasos numerados en el apartado “Modifications for Version 1.5”.

Luego de la instalación...

Para cargar la clase:

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

Para definir una variable de sesión:

$autenticado = array(
           'bandera_autenticado' => 1,
           'hora_autenticado' => date('H'),
           'fecha_autenticado' => date('Y-m-d'),
       );

$this->session->set_userdata('autenticado', $autenticado);

Para leer una variable definida:

$this->session->userdata('autenticado');

Para eliminar una variable de sesión definida

$this->session->unset_userdata('autenticado');

Recuerden que esta clase usa los mismos métodos de la clase session de CodeIgniter, por lo que si necesitan algún método especial pueden dirigirse a la documentación de dicha clase.

Espero les sirva...

Hasta la próxima!!!

Me has salvado la vida, llevo

Enviado por vic (no verificado) el Vie, 07/15/2011 - 07:45.
Me has salvado la vida, llevo dos dias peleandome con la session de CI y no sabia como solucionar la falta de espacio en las cookies!

Me alegra que te haya servido

Enviado por Carxl el Lun, 07/18/2011 - 00:26.

Me alegra que te haya servido en serio Smile Algo parecido me pasó jejeje.

Sino te importa me gustaria

Enviado por vic (no verificado) el Jue, 07/28/2011 - 01:35.
Sino te importa me gustaria hacerte alguna preguntilla de novato xD que soy nuevo en esto del php y del CI. Como llevo el contro de si un usuario esta logeado o no? o si tiene mas permisos que otro? Yo he pensado que lo logico es que el controlador compruebe el flag de logeo, y que luego lo redirija a una pagina o a otra segun otra flag para saber si es admin o no. Seria una buena forma? Muchas gracias!

Pues yo lo que normalmente

Enviado por Carxl el Vie, 07/29/2011 - 03:49.

Pues yo lo que normalmente hago (basándome en el tema de responsabilidades de las clases, sabes que una clase debe tener una única responsabilidad), creo una clase (una librería para ser exactos) y le asigno la responsabilidad de "vigilar" los permisos y guiar al usuario por donde puede ir.

En conclusión, deberías crear una clase que se encargue de esa tarea (suficiente tiene el controlador con hacer todo la lógica de sí mismo) y quizás la puedas autocargar en el config para que siempre esté activa.

Espero me haya hecho entender Laughing

Saludos y gracias por seguir mi blogCool

Muy buen aporte, pero???

Enviado por Joe_h (no verificado) el Lun, 04/16/2012 - 20:02.
Muy buen aporte, pero??? resuelves destruir la sesion a través de un logout y que cuando salga de la aplicaicón le des al botón atrás del navegador y no entre a la aplicación de nuevo???

muchas gracias, no sabia como

Enviado por Anónimo (no verificado) el Dom, 04/29/2012 - 10:57.
muchas gracias, no sabia como buscar esta info, puesto que en el manual no anda muy claro como recuperarlas

Hola Joe_H, eso tal cual, no

Enviado por Carxl el Vie, 05/04/2012 - 16:55.
Hola Joe_H, eso tal cual, no debe pasar, porque al destruir la sesión, se destruye y ahí hagan click en el botón atrás del navegador, ya no existe, por lo tanto no te deja acceder. Saludos!

Enviar un comentario nuevo

  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta se hace para comprobar que es usted una persona real e impedir el envío automatizado de mensajes basura.
CAPTCHA de imagen
Enter the characters shown in the image.