【问题标题】:How to save the user language如何保存用户语言
【发布时间】:2012-06-02 22:11:31
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: codeigniter session session-timeout


    【解决方案1】:

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

    【讨论】:

    • 我也在考虑 cookie,但不确定它是否适合这个目的。现在看来这是唯一的方法了。
    • 好吧,您也可以自己实现整个辅助会话,但对我来说似乎有点矫枉过正。 cookie 非常适合这个目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多