2011-07-19 12 views
8

Tengo una aplicación creada con codeigniter usando la clase de sesiones y almacenando datos de sesión en una base de datos. El problema es que obtengo registros de sesión adicionales en mi base de datos cuando mi página web carga un archivo css.Problema de sesión duplicada de Codeigniter

Hasta hace poco estaba ejecutando mi aplicación en un servidor VPS simple provisto por Rackspace. La base de datos y Apache se ejecutaban en el mismo VPS. Recientemente, sin embargo, he migrado mi aplicación al PHPFog para permitirle escalar más fácilmente. No tuve este problema con mi configuración de alojamiento anterior.

enter image description here

La fila con el valor poblada por user_data es mi sesión original. Las otras tres sesiones en blanco son el resultado de simplemente refrescar la página tres veces. Parece que lo he rastreado hasta incluir un archivo css en mi encabezado, cuando lo comento o lo elimino, el problema desaparece. Es solo este archivo css en particular, otros archivos css/js/image no causan este problema.

Aquí hay un enlace al archivo CSS en cuestión: http://pastebin.com/XfEBNFiC

Alguien sabe qué podría estar causando esto? ¡Gracias!

ACTUALIZACIÓN: Me di cuenta de que el html de la página en cuestión podría ser útil. Al comentar la hoja de estilo, incluir en la línea 13 hace que el problema desaparezca. http://pastebin.com/iBEb4he6

Update2:

$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'] = TRUE; 
$config['sess_table_name']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 

/* 
|-------------------------------------------------------------------------- 
| Cookie Related Variables 
|-------------------------------------------------------------------------- 
| 
| 'cookie_prefix' = Set a prefix if you need to avoid collisions 
| 'cookie_domain' = Set to .your-domain.com for site-wide cookies 
| 'cookie_path' = Typically will be a forward slash 
| 'cookie_secure' = Cookies will only be set if a secure HTTPS connection exists. 
| 
*/ 

$config['cookie_domain'] = 'casey.phpfogapp.com'; //$base_url_parts['host']; 
$config['cookie_path']  = '/'; 

$config['cookie_prefix'] = ""; 
$config['cookie_secure'] = FALSE; 
+0

¿Por qué es esto un problema? – jondavidjohn

+0

¿se está creando un registro en mi tabla de sesiones para cada solicitud de página? La tabla crecerá rápidamente y estará llena de registros de sesión inútiles que en realidad no se correlacionan con la sesión de un usuario. Oh, probablemente debería decir que la sesión de usuarios reales no parece haberse perdido. Las propiedades/variables de sesión se mantienen desde la solicitud hasta la solicitud. Son solo estos nuevos registros que aparecen de la nada. –

+0

Actualicé la pregunta para contener un enlace a mi html que incluye la hoja de estilos –

Respuesta

3

En mis aplicaciones coloco el código siguiente en .htaccess para prevenir una cookie para ser enviada con css/js/images solicitudes:

#.htaccess 

# Use Mod_deflate to compress static files 
<ifmodule mod_deflate.c> 
<filesmatch ".(js|css|ico|txt|htm|html|php)$"> 
SetOutputFilter DEFLATE 
</filesmatch> 
</ifmodule> 

# Speed up caching 
FileETag MTime Size 

# Expires 
ExpiresActive On 
ExpiresDefault "access plus 366 days" 

# Future Expires Headers 
<filesmatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
Header set Expires "Sat, 27 Dec 2014 23:59:59 GMT" 
</filesmatch> 
+0

¡Buen consejo! Gracias Zack! –

0

Tuve este problema antes y el problema fue que el nombre de la cookie de CI no puede contener puntos.

mal nombre de la cookie: .dominio.com

penal sin problemas: mydomaincom

que estaba usando el nombre de dominio con puntos para el nombre de la cookie Para habilitar las cookies de ancho de dominio (compartir las cookies del dominio principal para todos sus subdominios), resulta que encontré que lo único que necesitaba para eso era:

$config['cookie_domain'] = ".domain.com"; 
Cuestiones relacionadas