Codeigniter设置在会话中记住我

时间:2013-11-10 22:46:16

标签: php codeigniter session

我正在尝试将我的功能记住到我的登录表单中。当用户选中复选框或没有var_dumping会话到期数据返回63072000.我无法设置,我不明白为什么?

我怎么样var_dump:

var_dump($this->session->sess_expiration); // returning 63072000

表单视图:

<input name="rememberme" value="rememberme" type="checkbox" />

登录模式:

$rememberme = $this->input->post('rememberme');
if((!isset($rememberme)) || ($rememberme != "rememberme")){
$this->session->sess_expiration = 10800; // 3 hours
$this->session->sess_expire_on_close = TRUE;
}
$this->session->set_userdata($data);

会话配置:

$config['sess_cookie_name']     = 'cisession';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$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;

1 个答案:

答案 0 :(得分:1)

根据EllisLabs的forums,会话数据是在最初加载会话类时从config/config.php文件设置的(我想你要么在这段代码之前自动加载或手动加载在模型中),之后无法更改。

然而,在线程的下方,建议您可以更改会话数据。您可能尝试做的是在设置到期配置后强制更新会话数据,同时仍在if语句中:

$rememberme = $this->input->post('rememberme');

if( (!isset($rememberme)) || ($rememberme != "remember me") ) {
    $this->session->sess_expiration = 10800; // 3 hours
    $this->session->sess_expire_on_close = TRUE;

    $this->session->sess_update(); //Force an update to the session data
}