我想了解PHP应用程式如何检查,以查看用户是否登录。我专门找在MediaWiki的代码,试图帮助我理解,但这些情况应该在所有的PHP应用相当普遍。会话超时后,php应用如何识别用户?
从我所收集的主要情况是:
用户只需登录或创建,他们每次访问的页面PHP知道通过检查常见到$ _SESSION变量数据的他们, cookie。
用户有一个很久以前的“记住我”选项登录页面上选中。他们在那里有一个cookie的计算机与tokenID,这是与服务器上的一个令牌进行检查,以验证它们。在这种情况下,没有会话变量,因为访问之间的时间可能是几周。
我的问题是,当用户登录时会发生什么,但PHP会话超时并且他想访问一个页面?我会假设服务器没有简单的方法知道这个人是谁 - 而且他们必须重定向到登录页面。
然而,链接到MediaWiki做到了这一点。我已经验证会话文件在X分钟后被删除,但是当我在mediawiki中进行刷新时,它会知道我是哪个用户,并且cookie中不包含“token”变量。
还要注意的是cookie可能只有被保存在内存中,而不是保存到磁盘,所以你不一定会看到cookie文件中的令牌。在这种情况下,会话可以通过内存中的cookie重新创建,但是如果浏览器关闭,cookie数据将丢失,用户将重定向到登录页面。 – 2010-03-30 18:22:03