13

基于以下问题/答案 CodeIgniter 会话类在 Chrome 中不起作用

我遇到的问题是人们无法从远离美国服务器的另一个国家登录我的网站。在线搜索后,我偶然发现了一个建议,该建议描述了问题是如何基于服务器时区和用户时区之间的差异的。因此,通过延长 session_expiration 我设法解决了这个问题,人们能够成功登录。

我的问题是 sess_time_to_update 是否会创建一个新的时间戳,并且它会因为新的时间戳位于错误的时区而注销用户?我是否必须将新的 sess_time_to_update 设置为 17 小时以上,以便它涵盖最广泛的时区,如我已链接的问题中所述。是否有其他方法可以根据用户的本地时间在用户的浏览器中存储会话(不要求他们在配置文件和其他类型的用户不友好方案中选择时区)。我想要一个 2 小时的默认会话到期时间 + 800 秒。更新时间。我没有使用数据库来存储会话,我宁愿不使用它。

4

1 回答 1

14

sess_time_to_update设置是会话详细信息(例如上次活动)的更新频率。默认值为每 5 分钟(300 秒),并且将生成一个新的会话 ID。这将根据设置重置到期日期sess_expiration

我建议保持sess_time_to_update默认值(或更低),因为这会使用户会话保持更长时间,因为会话到期会不断重置。唯一可能需要保持较高的设置是sess_expiration,除非您可以确定用户时区。

有几种方法可以尝试确定用户时区。一种是 Javascript(例如:客户端时区偏移),或者您可以尝试使用PHP 的 GEOIP方法。

于 2012-12-20T16:01:08.637 回答