2012-09-16 73 views
5

我使用codeigniter 2.1.0爲客戶端開發和電子商務網站。 該網站一直運行良好約3個月,然後突然,登錄不堅持,會話數據沒有被設置。 我檢查了數據庫,發現每次頁面加載時都會創建一個新的會話。Codeigniter在每個頁面加載時創建新會話

這裏是我的配置價值

$config['sess_cookie_name']  = 'myu'; 
$config['sess_expiration']  = 7200; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = FALSE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = '_sessions'; 
$config['sess_match_ip']  = TRUE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 3600; 

$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = ""; 
$config['cookie_path']  = "/"; 
$config['cookie_secure'] = FALSE; 

我編輯的會話表USER_AGENT領域,以適應長期USER_AGENT字符串。 可能是什麼問題?我會爲任何幫助,不勝感激

+0

請參閱http://amerkhalid.com/codeigniter-creating-a-new-session-with-each-page-load/ – Prasanth

+0

請讓我們知道,如果@goldenparrot發佈的鏈接幫助你了 – Tom

+0

@Tom鏈接幫助 – MrFoh

回答

3

請確保您有在/application/config/config.php正確域組在$config['cookie_domain']

1

你也應該在你的會話表來檢查「USER_AGENT」的大小。在MacOS(Mountain lion,版本20.0)中,Firefox的用戶代理報告了UA中超過60個字符,所以我得到了一些「varchar(40)」的問題。

將字段從「varchar(40)」更改爲「varchar(255)」解決了我的問題。

+0

這也是我的問題 - 它讓我困惑,爲什麼默認的'ci_session'表有這個非常愚蠢的設置。 –

0

我發佈這個,希望它可以幫助其他人。我嘗試了很多在多個網站上提到的建議,並在此工作了2天。沒有解決方案的工作。

然後我決定檢查我的cookie中顯示的內容。我在config.php文件中設置了$config['sess_encrypt_cookie'] = FALSE;,以便我可以讀取數據並刪除所有舊的Cookie。我也將$config['sess_cookie_name']更改爲網站名稱。它最初是默認的'cisession'。突然間,它開始正常工作。我不知道這是否是我的舊餅乾清除,或關閉加密或改變名稱的差異,但我很高興它終於工作。我猜可能是我的cookie損壞了。因爲我已經看到網站爲相同的設置提供完全不同的建議(例如,有人說leave ['cookie_domain']空白,有人說你的根域添加(至少2個時間段)等),我包括我的設置在config.php文件中:

$config['sess_cookie_name']  = 'easyeverydayenglish'; 
$config['sess_expiration']  = 14400; 
$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']  = TRUE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 

$config['cookie_prefix'] = ""; 
$config['cookie_domain'] = ".eee.loc"; 
$config['cookie_path']  = "/"; 
$config['cookie_secure'] = FALSE; 

現在到我的下一個嘗試讓CI在goDaddy上工作的問題。 Arghh。

相關問題