php - PHP远程强制注销
问题描述
我目前正在使用 PHP 会话来跟踪用户会话,其中包含一个last-activity
超时id
字段、一个字段和一个account-type
字段。目前,一旦用户登录,所有这些信息以及设置数据都会从 MySQL 数据库中提取并存储在会话中,并且在会话期间保持不变。
问题是我希望实现管理员远程更改用户帐户类型的能力。如果用户的帐户类型在他们仍然登录时被远程更改,数据库中的更改将不会反映在用户的会话变量中。
对此的一种解决方案是向数据库表中添加一logout_flag
列。users
当管理员更改用户的帐户类型时,该用户在数据库中的条目将logout_flag
设置为1
. 然后我可以使用会话脚本在每次页面加载时检查这个条目,如果它设置为1
.
我担心这会给服务器增加太多开销;如果有数百个用户同时登录,这将相当于每分钟数百个 MySQL 查询。这是理想的解决方案吗?
解决方案
尝试使用session_save_path(),使用该函数,您可以找到 PHP 保存所有会话文件的路径。您可以稍后使用 unlink() 删除选定的文件。
小心这个!如果路径 = 全局 /tmp 目录。其他应用程序也在使用这个目录,你可以破坏一些东西。
您还需要知道用户的会话 ID,也许保存令牌和用户 ID/名称将帮助您识别正确的会话文件。
推荐阅读
- javascript - 检查是否从网页浏览器安装了 android 应用程序
- sql-server - 重新格式化非标准日期列
- regex - 匹配特定长度的单词
- vb.net - 从注册表项中获取值
- java - 如何在 neo4j 中搜索连接到特定顶部节点的所有节点和关系
- spring-boot - 如何在 Camel 中使用带有 BridgePropertyPlaceholderConfigurer 的前缀过滤属性
- wordpress - 结帐:白色背景上的白色文本的下拉菜单问题
- node.js - 使用 Node.js 对 s3 存储桶进行 api 调用时访问被拒绝
- excel - vba,从稀疏列复制数据以形成新的密集列
- java - 为什么私有成员实际上是由子类继承的