我有一个在 Linux 服务器上运行的 PHP Web 应用程序。它通过浏览器访问。
它使用 PHP 会话来存储用户的登录状态和用户 ID。我需要注销所有用户。
我有 root 权限,并试图破坏所有 PHP 会话,迫使所有用户重新登录。
我删除了存储在 /tmp/ 中的所有 sess_XXX 文件,当我返回到 webapp 时,我仍然处于登录状态,并且会话文件在 /tmp/ 中重新创建,并且我的所有详细信息仍然完好无损 - 使用与之前相同的值表明会话数据仍然存储在某个地方。
据我所知,除了 PHP 会话文件缓存用户的数据之外,没有其他“缓存机制”。
我尝试过更改 PHP 会话名称,然后删除会话文件,但我仍然处于登录状态。即使删除会话文件,然后在 Web 浏览器中再次访问应用程序重新创建会话文件,检查 sess_XXX 文件仍会显示相同的信息。此信息未存储在用户浏览器中,因此必须从会话中检索。
有谁知道我该怎么做真的销毁会话并强制用户注销?
答案1
我们遇到了同样的问题,并决定创建一个维护页面。当代码验证用户是否已登录时,我们在登录验证过程中建立了一个代码,用于检查维护模式是否开启,从而强制所有用户重新登录。
我们冒着用户当时处于闲置状态的风险。在这些情况下,我们使用存储在会话 Cookie 中的信息,强制关闭所有时间戳早于维护模式时间戳的用户的会话。除了时间戳,您还可以使用存储在 Cookie 中的任何自定义数据(用户组、用户角色、用户 ID),以便更精确地关注特定范围的用户。