2011-07-19 149 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";