5

ログイン後のcodeigniterで、すべてのデータをセッションに保存し、フォーラムコントローラーにリダイレクトしています。しかし、フォーラムコントローラーのすべての値が失われています。

セッションからいくつかの値を減らした後で試してみると、完全に機能します。

今私の質問は-なぜこれが起こっているのですか?codeIgniterのセッションに保存される値の上限はありますか?

私も検索しようとすると、

redirect('forum', 'refresh');

しかし、それは機能していません。そして、私のプロジェクトは半分開発されているので、codeignterの「PHPネイティブセッションクラス」を使用できません。

4

4 に答える 4

7

デフォルトでは、CodeIgniterはセッションデータをCookieに保存します。Cookieのサイズには上限があります。セッションに4KBを超えるデータを保存しようとすると、問題が発生し始めます。

最も簡単な解決策は、おそらくセッションの詳細をDBに保存することです。CodeIgniterセッションのドキュメントでは、セッションをDBに保存するプロセスについて詳しく説明しています。これは、テーブルを設定し、いくつかの構成パラメーターを変更することです。

于 2013-01-02T13:30:13.677 に答える
4

CIセッションは、オプションの暗号化を使用して、すべてをCookieに保存します。したがって、明らかにその限界に達することは可能です。これは、2Kバイトのようなものを格納する場合です。ログイン情報だけなら問題ありません。もしあなたがそれと同じくらい大きなものを使うなら、まあ、あなたはそうすべきではないと思います。

とにかく、私は同様の問題を抱えていたので、これが問題であるとは思いません(私はこれの正確な原因を覚えていません)。私が見つけた解決策は、ネイティブPHPセッションクラスを使用し、それに1つのメソッドを追加することでした:all_userdataまたはそれが呼び出されたもの。これにより、すべてが通常のセッションと同じように機能しました(何も変更する必要はありません)。

于 2013-01-02T13:31:40.227 に答える
1

説明:デフォルトでは、CodeIgniterはセッションデータをCookieに保存します。Cookieのサイズには、ブラウザーによって2KB〜4KBの上限があります。セッションに4KBを超えるデータを保存しようとすると、問題が発生し始めます。

解決策:最も簡単な解決策は、セッションの詳細をDBに保存することです。CodeIgniterセッションのドキュメントでは、セッションをDBに保存するプロセスについて詳しく説明しています。これは、テーブルを設定し、いくつかの構成パラメーターを変更することです。以下はあなたがする必要がある変更です-

構成ファイル(application / config / config.php)の以下の変数を更新します。

$config['sess_use_database'] = TRUE;
$config['sess_table_name']   = 'ci_sessions';

セッションを保存するための新しいテーブルを作成しました-

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(45) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);

詳細については、http://goo.gl/YPllj0をご覧ください。

于 2013-11-08T18:14:58.803 に答える
0

私の場合、いくつかのテスト(ローカルホストでhttpsとhttpを使用)した後、その問題でエラーが発生し、$ config ['cookie_secure']が適切に設定されていないため、config.phpで変更を試すことができます。

$config['cookie_secure']    = FALSE; // if is not under https, or true if you use https

乾杯!

于 2014-07-21T09:18:01.937 に答える