我的配置是这样的:
$config['sess_driver'] = 'database'; // select database driver
$config['sess_save_path'] = 'ci_sessions'; // name of the mysql table
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$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'] = FALSE;
$config['sess_time_to_update'] = 300;
我的自动加载是这样的:
$autoload['libraries'] = array('database', 'session', 'form_validation', 'functions');
在控制器 login.php 中:
$this->session->set_userdata('club', 'chelsea');
在控制器 dashboard.php 中:
echo $this->session->userdata('club');
如果不同的控制器,它没有成功调用会话俱乐部
但是,当我在同一个控制器(controller login.php )中调用会话俱乐部时,它正在工作
我在 $this->library->load('session');
Dashboard.php
。但这不是成功
有什么办法可以解决我的问题吗?
谢谢
原文由 moses toh 发布,翻译遵循 CC BY-SA 4.0 许可协议
@Ali 的回答建议将在
Dashboard.php
的构造函数中工作或加载会话库,就像这样……或者,如果您只需要在控制器内的一个特定功能中使用会话,则改为在该功能中加载库。
关键是必须先将库加载到某个地方,然后才能调用它的函数。
在控制器中自动加载或显式加载会话的选择可能取决于您的站点需要使用会话的频率。如果每个控制器都使用它们,则选择自动加载。如果只有少数几个地方需要会话,那么将它们加载到不使用它们的地方是一种资源浪费。