2012-04-18 6 views
1

私は学校用の小さなブログのようなシステムを構築しています。私はいくつかのデータをクッキーに保存するだけでなく、セッションをdbとcookieに保存する必要があります。あなたがconfig/config.phpに設定し、config/autoload.phpにセッションライブラリをロードすると、codeigniter(CI)がデータベースとクッキーにセッションを保存しています。Codeigniterがページの更新時に自動保存を実行しないようにするにはどうすればよいですか?

目的:セッション、電子メール、およびログイン後にクッキーのユーザー名を入力して後で戻してください。 Cookieを終了し、Cookieのすべてのdbデータが期限切れまたはログアウトします。

問題:CIは、ページをリロードするたびに毎回dbに新しいセッションレコードを作成しています。それは本当にどのページを更新しても、新しいINSERTをDBに作成します。

質問:自動保存するCIを停止し、ログアウト後にログインしてセッションを終了するにはどうしたらよいですか?

答えて

3

この正確な構文でセッションCIテーブルを作成しましたか?私は多くの問題がそれに付随していることに気づいた。

-- 
-- 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'] = 'ここ'にそのネームを設定する必要があります。そして、あなたが望むようにセッションテーブルに名前を付けることができるという結論に至りましたが、クッキー名は「セッション」にすることはできません。なぜか分かりませんが、 '$ config ['sess_cookie_name'] = 'session';に設定すると、ciはすべてのリフレッシュとページビューで表の行を作成し始めます。 –

+0

問題が解決しました。これでconfig.phpの設定ができました: '$ config ['sess_cookie_name'] \t \t = 'ab_sessions'; $ config ['sess_expiration'] \t \t = 7200; $ config ['sess_expire_on_close'] \t =真; $ config ['sess_encrypt_cookie'] \t =偽です。 $ config ['sess_use_database'] \t =真; $ config ['sess_table_name'] \t \t = 'ab_sessions'; $ config ['sess_match_ip'] \t \t = FALSE; $ config ['sess_match_useragent'] \t =真; $ config ['sess_time_to_update'] \t = 300; 'ありがとうございました! –

関連する問題