是否可以根据其价值使会话到期?

时间:2014-07-28 17:50:39

标签: php session

我猜测答案是否定的,但我正在尝试解决这种潜在的安全方案:

用户A 通过会话1登录

用户B 获取用户A 的密码并登录会话2

用户A 意识到他们的帐户会以某种方式受到损害并更改其密码。

在密码更改时,我希望它也能将用户B记录下来。换句话说,我想用$_SESSION['userid'] == 123注销所有用户。

我认为没有办法在PHP中执行此操作但是没有为所有用户清除所有SESSIONS,但我想仔细检查。

1 个答案:

答案 0 :(得分:2)

这是完全可能的。使用标准的基于文件的会话存储,您所要做的就是找到存储会话的目录,迭代每个文件,检查它并清除它是否是该用户的会话。最好的方法可能是将session_id()与会话文件的文件名一起使用,然后使用session_start(),然后使用测试,然后使用session_destroy()(如果它是罪魁祸首会话)。这非常低效,但是可行(特别是因为希望这不是你一直做的事情)。

如果切换到数据库支持的会话存储,则可以通过常规SQL查询更轻松地查找和清除特定用户的所有会话。