我正在尝试在登录表单中实现“记住我”复选框。查看文档我发现默认情况下我可以更改配置设置:
$config['sess_expiration'] = 10; // I set it to 10 seconds for testing
我想要做的是无限期地延长这个时间,或者至少延长这个时间,如果用户选中一个方框的话。当输入通过POST传递时,我正在更改sess_expiration
的值,我可以看到值已更改,但它在默认时间后仍然过期,而不是在新时间之后。
if ( $this->input->post('rememberMe') )
{
$this->config->set_item('sess_expiration', 0);
}
在我设置会话信息之前,我调用了这个,如果我回应它,我看到值已正确设置,但我等待,然后我的会话消失了,我被重定向回我的登录页面。
$this->session->set_userdata(
array('user' => array(
'userId' => $user->userId,
'userName' => $user->userName,
'userLevel' => $user->userLevel,
'userEmail' => $user->userEmail,
'userCreated' => $user->userCreated,
'userUpdated' => $user->userUpdated,
'userStatus' => $user->userStatus
),
'loggedIn' => $user->userId
));
我这样做错了吗?我在这个问题上花了太多时间,所以我会继续前进,希望这里有人可以指出我做得很差。
谢谢!
答案 0 :(得分:1)
您是否考虑过为此设置Cookie?我认为你最好不要与用户一起存储数据,因此每次返回他们的cookie数据时,都可以搜索你定义的变量。
if ( $this->input->post('rememberMe') )
{
$this->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure);
}
如果您不想使用变量,则可以使用信息传递数组。完成后,选择cookie的名称并在$ value中设置Username,或者设置你想要的任何名称,然后在登录页面的控制器中查找cookie:
if($this->input->get_cookie('cookie_name'))
{
//set the username and password for your form
}
else
{
//No cookie was found. Don't set anything.
}
我今天早上没有时间来测试它,但它应该适合你。
答案 1 :(得分:0)
这样做:
// Change the config setting
$this->config->set_item('sess_expiration',0);
// Force the Session class to recapture global settings by calling it's constructor
$this->session->CI_Session()