0

我将用户语言选择保存到这样的会话中:

$this->session->set_userdata('language', $language);

然后我根据会话数据设置语言(并将 English 作为默认语言)。

if ( !$language = $CI->session->userdata('language') )
{
    $language = "english";
}

$CI->config->set_item('language', $language);

它运作良好,但用户选择的语言仅持续约。2 小时 - 然后用户必须再次选择语言。所以问题是,我怎样才能延长会话时间以过期(或仅在用户清理浏览器数据的情况下使其过期)。我无法将用户选择保存在数据库中,因为我还需要处理我网站上的访客。

我知道我可以在 CI 的配置中延长会话时间,但我只希望它仅在语言选择的情况下发生,而不是例如帐户会话。

4

1 回答 1

1

这是同一个会话,它要么过期,要么不过期。您不能让身份验证部分过期,但不能让语言选择过期。CI 无法轻松管理多个会话,这使得将身份验证存储在一个短期会话中并将语言偏好存储在一个长期会话中成为可能。事实上,将语言偏好直接存储在 cookie 中可能更容易;请记住,您必须在每个请求上再次设置 cookie,否则即使用户正在积极使用该网站,它也不会在用户活动时自动刷新并且会过期。

于 2012-06-02T22:17:09.423 回答