2011-07-19 93 views
8

我有一个使用会话类和存储会话数据在数据库中使用codeigniter构建的应用程序。问题是当我的网页加载一个css文件时,我在数据库中获得额外的会话记录。Codeigniter重复会话问题

直到最近我还在一个由rackspace提供的简单VPS主机上运行我的应用程序。数据库和Apache都在同一个VPS上运行。然而,最近我将我的应用程序迁移到PHPFog,以便更容易扩展。我没有与我以前的托管设置 这个问题。

enter image description here

与USER_DATA的填充值的行是我原来的会话。其他三个空白会话是三次简单刷新页面的结果。我似乎已经追踪到在我的头文件中包含一个css文件,当我将它注释掉或删除它时,问题就消失了。它只是这个特殊的CSS文件,其他的CSS/JS /图像文件不会导致这个问题。

这里是有问题的CSS文件的链接: http://pastebin.com/XfEBNFiC

任何人都知道这可能是导致此?谢谢!

更新: 我意识到有问题的页面的html可能会有所帮助。注释掉样式表包含在第13行使问题消失。 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

为什么这是一个问题? – jondavidjohn

+0

正在为每个页面请求在会话表中创建一条记录?该表将迅速增长并充满无用的会话记录,这些记录实际上与用户会话无关。哦,我应该说,实际的用户会话似乎没有丢失。会话属性/变量从请求到请求被维护。只是这些新的记录出现无处不在。 –

+0

我更新了问题以包含指向我的html的链接,其中包含样式表 –

回答

3

在我的应用我下面的代码放入的.htaccess防止cookie来用CSS/JS /图片的请求被发送:

#.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

好的提示!谢谢扎克! –

0

我之前有过这个问题,问题在于CI cookie名称中不能有点。

不良Cookie名称:.domain.com

顺利刑事:mydomaincom

我用的是域名与点的cookie名称启用域范围内的Cookie(曲奇份额从主域所有它的子域),事实证明我发现我唯一需要的是:

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