【问题标题】:How to tie a session expiration to a cookie expiration?如何将会话到期绑定到 cookie 到期?
【发布时间】:2013-02-23 05:03:04
【问题描述】:

在 PHP 中,我怎样才能使 cookie 在会话存在时持续存在?

场景: 网站由页面组成,有些是执行的 PHP 脚本,例如 loginview cart。有些是 Apache 从缓存中读取的静态 html 文件,并且不会在这些页面上调用 PHP。

在任何运行 PHP 的页面上都会生成和维护 sessionID。无论用户是否实际登录,会话都存在。会话存储用户是否登录。浏览器只有一个 sessionID cookie。

缓存页面应显示log inlog out 按钮,具体取决于用户是否登录。 PHP 不会在缓存页面上调用,因此无法在此处读取会话值。必须使用一个小的 JavaScript 函数来检查 IsLoggedIn cookie。

问题: 如果用户登录,PHP 可以设置 JavaScript 读取的 cookie。好的。如果用户使用注销按钮明确注销,则 cookie 可能会过期。很好。

但是-如果用户离开计算机,他的会话会在他与 PHP 页面的最后一次交互后过期 x 秒,而他的 cookie 从创建时会过期 y 秒。这可能会导致一个超时。

有没有办法让两者同步,让它们总是一起过期?

【问题讨论】:

    标签: php apache session-cookies


    【解决方案1】:

    您可以将会话存储在数据库中,这样您就可以更好地控制它们,并使用在时间间隔上设置的使用 ajax 来进行检查。这会让事情变得更容易,现在你不需要 cookie。虽然如果您想要“记住我”功能,您可以使用存储在 cookie 中的唯一标识符和 setcookie("nameofcookie", "unuiq md5 value maybe", time()*3600));

    但是如果您在数据库中控制会话,您还可以控制会话长度,并且您的所有逻辑都可以在 php 中。

    你也可以这样做PHP Session timeout

    我就是这样做的。

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多