2012-04-18 13 views
1

我正在爲學校建立一個類似博客的小型系統。我需要在cookie中存儲一些數據以及在db和cookie中保存會話。如果你在config/config.php中設置它,並且在config/autoload.php中加載會話庫,codeigniter(CI)會自動將數據庫和cookie中的會話保存爲數據庫和cookie。如何避免Codeigniter在頁面刷新上執行自動保存?

目標:我需要設置會話,電子郵件和登錄後在cookie中輸入用戶名,然後再取回。在cookie上殺掉cookie和所有db數據到期或註銷。

問題:CI在每次重新加載頁面時都會在db中創建新的會話記錄。它劑量真的很重要哪個頁面,甚至在刷新它使新插入到DB。

問題:我應該如何停止創建autsave的配置項,並使其僅在登錄後保存會話並在註銷後終止會話?

回答

3

您是否使用此確切語法創建了會話配置表?我注意到它有許多問題。

-- 
-- Table structure for CodeIgniter ci_sessions. 
-- 
DROP TABLE IF EXISTS `ci_sessions`; 

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `session_id` varchar(40)   DEFAULT '0' NOT NULL, 
    `ip_address` varchar(16)   DEFAULT '0' NOT NULL, 
    `user_agent` varchar(120)      NOT NULL, 
    `last_activity` int(10)  unsigned DEFAULT 0 NOT NULL, 
    `user_data`  text, 
    PRIMARY KEY (`session_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ; 

-- ------------------------------------------------------------- 
-- `user_data` text,  COMMENT - maximum length of 65535 characters. 
-- `user_data` mediumtext, COMMENT - maximum length of 16777215 characters. 
-- `user_data` longtext, COMMENT - maximum length of 4294967295 characters. 
+0

感謝您的回覆。你的文章幫助我解決了問題。其實ci文檔說你可以給表名添加你想要的名字,但是你必須在config.php中設置這個名字'$ config ['sess_cookie_name'] ='here';'所以我做了一個研究。並得出結論,您可以根據需要命名會話表,但Cookie名稱不能是「會話」。我不知道爲什麼,但是當我將它設置爲'$ config ['sess_cookie_name'] ='session'時;'ci開始在每個刷新和頁面視圖上創建錶行。 – 2012-04-18 16:57:18

+0

問題解決了,現在我的config.php配置如下:'$ config ['sess_cookie_name'] \t \t ='ab_sessions'; $ config ['sess_expiration'] \t \t = 7200; $ config ['sess_expire_on_close'] \t = TRUE; $ config ['sess_encrypt_cookie'] \t = FALSE; $ config ['sess_use_database'] \t = TRUE; $ config ['sess_table_name'] \t \t ='ab_sessions'; $ config ['sess_match_ip'] \t \t = FALSE; $ config ['sess_match_useragent'] \t = TRUE; $ config ['sess_time_to_update'] \t = 300;'非常感謝你! – 2012-04-18 16:59:52