如何保存用户语言

时间:2012-06-02 22:11:32

标签: codeigniter session session-timeout

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

这是同一个会话,它要么已过期,要么已过期。您不能让身份验证部分过期,但不能选择语言。 CI不会使管理多个会话变得容易,这使得可以将认证存储在一个短期会话中,并将语言首选项存储在一个较长期的会话中。实际上,将语言首选项直接存储在cookie中可能更容易;请记住,您必须在每个请求上再次设置cookie,否则它将不会在用户活动时自动刷新,即使用户正在使用该站点也将过期。