PHP 中的“Logout Everywhere”是如何工作的?

Moo*_*oon 6 php logout

我刚刚发现stackoverflow有一个链接可以注销每台登录的计算机。

所以..我想过如何在 PHP 中实现相同的功能。我想出了使用 session_set_save_haldner 来控制 write() 方法。在 write() 方法中,我可以创建一个以用户名开头的会话文件。例如,用户 john 可能有会话文件 john_kdkajdkak 和 john_29039dla。当 John 单击“Logout Everywhere”时,我可以编写一个代码来查找以“john”开头的文件名,然后删除它们以清除会话。

还有其他更好的解决方案吗?如果你已经让它工作了,你是如何实现它的?

lee*_*ers 5

使用数据库来持久化会话数据。

使用session_set_save_handler您可以为用户会话滚动您自己的数据库存储后端 -sessions具有user_idusers表相关的外键。“到处注销”按钮会触发简单的操作DELETE FROM sessions WHERE user_id = 1234并使用户的每个会话无效。

您还可以轻松地向session表中添加其他列- 例如,用于存储会话的 IP 地址,以便用户可以查看其他会话从何处登录。

使用数据库以获得灵活性和性能。