【发布时间】:2010-03-30 18:13:28
【问题描述】:
我正在尝试了解 PHP 应用程序如何检查用户是否已登录。我正在专门查看 mediawiki 的代码以帮助我理解,但这些情况在所有 php 应用程序中应该相当普遍。
据我所知,主要情况有:
一个刚刚登录或创建的用户,每次访问该页面时,PHP 通过检查 $_SESSION 变量和 cookie 共有的数据来了解他们。
很久以前,用户在登录页面上选中了“记住我”选项。他们在计算机上有一个带有 tokenID 的 cookie,使用服务器上的令牌对其进行检查以对其进行身份验证。在这种情况下,没有会话变量,因为访问之间的时间可能是几周。
我的问题是,当用户登录但 PHP 会话超时并且他想访问页面时会发生什么?我会假设服务器没有简单的方法知道这个人是谁 - 并且他们必须被重定向到登录页面。
但是,mediawiki 就是这样做的。我已经验证会话文件在 X 分钟后被删除,但是当我在 mediawiki 中点击刷新时,它知道我是哪个用户,并且 'token' 变量不包含在 cookie 中。
【问题讨论】: