【发布时间】:2023-03-04 12:08:01
【问题描述】:
如果用户登录时记得我检查,我正在尝试登录用户 2 周,然后我在会话中设置了一些变量,并且 cookie 设置了 2 周。它设置正确,我已经打印并得到了值session_cookie_lifetime = 1209600 和session_gc_maxlifetime = 1209600。我还打印了会话并在$_SESSION 中获得了正确的值。
登录我的网站后,当我关闭计算机并重新打开我的网站时,它似乎正在运行(它让我成为登录用户)。但是当我关闭我的电脑时,第二天当我打开我的浏览器时,它无法正常工作,并且显示我没有登录我的网站。我已经打印了 $_COOKIE 和 $_session 。它表明在cookie中有:
[PHPSESSID] => svikos35bgclmebk2cqraiddt2
但是会话是空的。
我得到了这个表单 modx 的东西:
MODx 会根据对站点的每个请求自动启动和结束会话。您可以简单地将值保存到 $_SESSION 数组中,它们将保存在请求之间,以便您可以在后续页面上使用它们(只要您具有相同的用户会话)。除了不要自己调用会话函数来启动、结束或以其他方式操作会话配置之外,它并没有什么魔力——这一切都可以通过 MODx 中的设置来完成。
我正在使用 modx revo。这是一个有点描述性的问题。让我知道你需要别的东西。
任何可能对我有帮助的东西(博客链接、任何设置、任何建议)都将不胜感激。
提前致谢
【问题讨论】:
-
RTFM: php.net/session_destroy "如果 cookie 用于...那么 cookie 必须被删除"。
session_destroy几乎等同于$_SESSSION = array(),除了会话内容之外不会破坏任何其他内容。 -
会话只持续到浏览器关闭。您可能需要从 cookie 重新创建会话。
-
如果我需要重新创建会话,那么我认为每次关闭浏览器后会话都应该为空。但是在浏览器重新启动后它在会话中具有所有值。它只有在我登录后第二天打开浏览器时才消失。实际上由 modx 自动处理的会话和 cookie。据我所知,我只需要设置它
-
@bansi 你错了。会话可能会在服务器上持续一周或更长时间。它保存在 php session 目录中(例如),有时当这个目录溢出时服务器会失败
-
@BaBL86 会话可能存在于服务器中,但是如果浏览器不向服务器发送会话详细信息,服务器如何确定哪个会话属于哪个浏览器?并且标准浏览器在浏览器关闭后不会保留会话详细信息。
标签: php session cookies modx-revolution