为什么不将会话数据存储在表的持续时间中?

时间:2013-03-21 12:16:44

标签: php codeigniter session session-cookies session-timeout

我是使用MVC Codeigniter Framework的PHP中的新Comer。 我有一个关于会话存储在表(ci_sessions)与codeigniter的问题。我也设置了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'];

然后错误显示为 -

Array ( 
[session_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 ) 

A PHP Error was encountered
Severity: Notice
Message: Undefined index: myksb
Filename: controllers/home.php
Line Number: 13876

1 个答案:

答案 0 :(得分:1)

这里有几件事需要解决。

  1. $this->session->userdata()是一种不是数组的方法。 $this->session->userdata['myksb'];无效。您必须使用$this->session->userdata('myksb');

  2. $this->session->sess_destroy()会杀死您的会话。它实际上会从您的会话和cookie中删除您的sessionId。完成后,您无法为会话分配新信息,它不再具有ID。你必须删除该电话。 CodeIgniter会自动清理会话表。