2012-06-02 49 views
0

我节省了用户的语言选择进入会议这样的:如何保存用户语言

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

然后我设置取决于会话数据的语言(和制作英语,作为一种默认语言)。

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

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

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

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

回答

1

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

+0

我也在考虑饼干,但不确定它是否适合此目的。似乎现在是唯一的方法。 – Cyclone

+0

你也可以自己实现整个二级会话,但对我来说似乎是一种矫枉过正。一个cookie很适合这个目的。 – lanzz

+0

好的,谢谢你的帮助:-)。 – Cyclone

相关问题