codeigniter

Codeigniter Sessions


Codeigniter es un framework de PHP que maneja el patrón de arquitectura de software MVC (Modelo Vista Controlador).

Después de aprender las bases de PHP y entender como funciona, comencé a estudiar este framework y llevo aproximadamente 2 años trabajando con él. Me he sentido muy agusto y la manera en como se organiza la funcionalidad de un sistema utilizando el patrón MVC me parece perfecta.

En mi trabajo, he requerido utilizar sesiones para crear páneles de administración en algunos sistemas. Al trabajar con codeigniter en un ambiente local todo funciona a la perfección, pero al momento de subir el proyecto a un servidor en la web ocasiona problemas ya que no genera las sesiones, entonces no se puede acceder al panel de administración.

Leyendo en algunos foros, encontré cual es el problema. Codeigniter no utiliza las sesiones nativas de PHP, sino que utiliza cookies, y al parecer el nombre que codeigniter asigna a la cookie no es aceptado por los navegadores, por lo que hay que modificar el archivo config.php que se encuentra dentro de application/config:

*
|--------------------------------------------------------------------------
| Session Variables
|--------------------------------------------------------------------------
|
| 'sess_cookie_name'		= the name you want for the cookie
| 'sess_expiration'			= the number of SECONDS you want the session to last.
|   by default sessions last 7200 seconds (two hours).  Set to zero for no expiration.
| 'sess_expire_on_close'	= Whether to cause the session to expire automatically
|   when the browser window is closed
| 'sess_encrypt_cookie'		= Whether to encrypt the cookie
| 'sess_use_database'		= Whether to save the session data to a database
| 'sess_table_name'			= The name of the session database table
| 'sess_match_ip'			= Whether to match the user's IP address when reading the session data
| 'sess_match_useragent'	= Whether to match the User Agent when reading the session data
| 'sess_time_to_update'		= how many seconds between CI refreshing Session Information
|
*/
$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']		= FALSE;
$config['sess_match_useragent']	= TRUE;
$config['sess_time_to_update']	= 300;

Al parecer los navegadores no aceptan que el nombre de la cookie contenga un guión bajo, por lo que hay que cambiar el nombre de la cookie de

$config['sess_cookie_name'] = 'ci_session';

a

$config['sess_cookie_name'] = 'cisession';

Finalmente, con ese cambio, se podrá generar la sesión (cookie) que permitirá acceder al panel o contenido que está disponible solo para usuarios que se han loggeado.

Nota

Este cambio se realiza normalmente para que las “sesiones” puedan emplearse con IE ya que es el navegador que mas problemas nos causa a los desarrolladores. A su vez, necesitamos que en el IE se acepten todas las cookies, ya que si estamos intentando acceder a contenido por medio de un login, no se podrá acceder a dicho contenido porque nunca se generará la sesión.

About these ads
This entry was published on 10 mayo, 2012 at 23:55. It’s filed under Tech and tagged , , , , . Bookmark the permalink. Follow any comments here with the RSS feed for this post.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 326 seguidores

A %d blogueros les gusta esto: