0

私は、MVC Codeigniter フレームワークを使用した PHP の新参者です。codeigniter. を使用してテーブル (ci_sessions) に保存するセッションに関する問題があり、config.php ファイルも次のように設定しました。

$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration']= 3600;
$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;

また、データベースに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`)
);

上記のすべてのアクティビティを実行した後、DB の ci_sessions テーブルの user_data 列にデータが格納されていません。

like-を使ってセッションデータにアクセスしたいとき print_r($this->session->all_userdata()); print $this->session->userdata['myksb'];

エラーは次のように表示されます-

配列 (
[セッション ID] => 97b9e34713b52f32a32e915053cba826
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko
[last_activity] => 1363866927 )

PHP エラーが発生しました
重大度: 通知
メッセージ: 未定義のインデックス: myksb
ファイル名: controllers/home.php
ライン番号: 13876
4

1 に答える 1

1

ここで修正する必要があるのは、これらの 2 つの点です。

  1. $this->session->userdata()配列ではなくメソッドです。$this->session->userdata['myksb'];有効じゃない。使用する必要があります$this->session->userdata('myksb');

  2. $this->session->sess_destroy()あなたのセッションを殺します。実際には、セッションと Cookie から sessionId を削除します。それが完了すると、セッションに新しい情報を割り当てることはできなくなり、ID がなくなります。その呼び出しを削除する必要があります。CodeIgniter は自動的にセッション テーブルを消去します。

于 2013-03-21T13:09:59.870 に答える