首页 > 解决方案 > PHP远程强制注销

问题描述

我目前正在使用 PHP 会话来跟踪用户会话,其中包含一个last-activity超时id字段、一个字段和一个account-type字段。目前,一旦用户登录,所有这些信息以及设置数据都会从 MySQL 数据库中提取并存储在会话中,并且在会话期间保持不变。

问题是我希望实现管理员远程更改用户帐户类型的能力。如果用户的帐户类型在他们仍然登录时被远程更改,数据库中的更改将不会反映在用户的会话变量中。

对此的一种解决方案是向数据库表中添加一logout_flag列。users当管理员更改用户的帐户类型时,该用户在数据库中的条目将logout_flag设置为1. 然后我可以使用会话脚本在每次页面加载时检查这个条目,如果它设置为1.

我担心这会给服务器增加太多开销;如果有数百个用户同时登录,这将相当于每分钟数百个 MySQL 查询。这是理想的解决方案吗?

标签: phpmysql

解决方案


尝试使用session_save_path(),使用该函数,您可以找到 PHP 保存所有会话文件的路径。您可以稍后使用 unlink() 删除选定的文件。

小心这个!如果路径 = 全局 /tmp 目录。其他应用程序也在使用这个目录,你可以破坏一些东西。

您还需要知道用户的会话 ID,也许保存令牌和用户 ID/名称将帮助您识别正确的会话文件。


推荐阅读