如何在codeigniter 3数据库中设置会话?

时间:2015-05-06 19:56:29

标签: php mysql codeigniter session codeigniter-3

我正在使用新版本(3.0.0)。 CodeIgniter和我有一个新问题,我的会话不起作用。我的意思是,控制器中的代码是正确的,因为没有错误,但是,当我尝试在视图中打印PHP变量时,什么都没有。

我在MySQL服务器中检查了我的表,没有,我现在不知道是什么问题。我把我的config.php代码。 (我不太了解这个新版本中的很多内容)

$config['sess_table_name']              = 'ci_sessions';
$config['sess_driver']              = 'database';
$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']          = 7200;
$config['sess_save_path']               = NULL;
$config['sess_match_ip']                = FALSE;
$config['sess_time_to_update']      = 300;
$config['sess_regenerate_destroy']  = FALSE;

我必须将第一行添加到" make"会话有效,我不知道该配置在数据库中进行会话是否正确。

如果有人遇到同样的问题,请帮助我:(。我的Session课程尚未编辑。

4 个答案:

答案 0 :(得分:31)

首先CI3 session table和CI2会话表(Saving Session Data to a Database)结构不同

新会话表structure

 CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(40) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    PRIMARY KEY (id),
    KEY `ci_sessions_timestamp` (`timestamp`)
);

第二,他们使用old configuration variables支持new configuration,但最好使用新配置

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';//its your table name name
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;

docs

上查看更多详情

会话库几乎没有新功能(功能)。

记住不要忘记在使用之前通过autoload.php加载或加载$this->load->library('session');

答案 1 :(得分:0)

如果您添加了“第一行”(即sess_table_name)以使其正常工作,那是因为您的sess_driver值设置为数据库。看看list of supported drivers,您会看到基于文件的会话,它将默认为。换句话说,如果你删除这些行,它应该工作:

$config['sess_table_name']          = 'ci_sessions';
$config['sess_driver']              = 'database';

答案 2 :(得分:0)

删除添加的行并设置:

$config['sess_save_path'] = 'ci_sessions';

其余代码应该没问题。 Link to docs

答案 3 :(得分:-2)

试试这个:

$config['sess_save_path'] = sys_get_temp_dir();