我的配置是这样的:
$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');
如果使用其他控制器,则无法成功调用会话俱乐部
但是,当我在同一控制器(控制器login.PHP)中调用会话俱乐部时,它正在工作
我尝试$this-> library-> load(‘session’);在Dashboard.PHP的构造函数中.但这不是成功的
谢谢
解决方法:
@Ali的答案表明将像这样在Dashboard.PHP的构造函数中工作或加载会话库.
class Dashboard extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
}
//the rest of controller's code
}
或者,如果您只需要控制器内某个特定功能中的会话,则改为在该功能中加载库.
在控制器中自动加载或显式加载会话的选择可能取决于您的站点需要使用会话的频率.如果每个控制器都使用它们,则选择自动加载.如果仅在少数几个地方需要会话,则将资源加载到不使用它们的位置会浪费资源.