0

在 PHP 中,我怎样才能制作一个在会话存在时持续存在的 cookie?

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

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

根据用户是否登录,缓存页面应该显示一个log in或一个按钮。log outPHP 不会在缓存页面上调用,因此无法在此处读取会话值。必须使用一个小的 JavaScript 函数来检查 IsLoggedIn cookie。

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

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

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

4

1 回答 1

0

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

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

您也可以执行此PHP 会话超时

我就是这样做的。

于 2013-02-22T21:03:04.153 回答