在PHP中终止另一个用户的会话

时间:2018-04-18 22:15:35

标签: php session terminate

当用户启动我的应用时,我会使用session_id()请求PHP会话ID字符串。我将此会话ID字符串存储在MySQL表中。

该应用程序一次可以登录数十人,我需要能够通过管理员使用的程序终止用户并列出所有活动用户。到目前为止,我还没有找到像terminate_session($session_id)这样的函数,但我需要能够终止另一个PHP用户的会话。这样做有简单的方法吗?

添加了以下回复:(不尖叫)
我不想用mysql表自己做。我希望能够调用一个终止另一个用户的php函数......这可能吗?我知道我可以通过将其集成到app表和程序中来自己完成。但是不想在它上面做更多的工作,我只是想能够使用session_id()函数提供的php session_id字符串调用php函数,然后终止进程。类似于linux kill命令。这是否存在于php ??? THX

2 个答案:

答案 0 :(得分:0)

在会话ID表中创建另一个字段,该字段记录会话是否已被管理员标记为要销毁。

然后让用户代码定期检查会话是否已被标记为销毁。然后你可以调用标准" session_destroy()"并且它将终止当前会话,在这种情况下,该会话将是您标记的用户。

答案 1 :(得分:0)

没有内置的PHP函数,但你有几个简单的方法。

如果您已经拥有了要销毁的会话ID,并使用$session_id = 'mslpuu98uf1jumf2ervboioeq6'; $session_file = sprintf( '%s%ssess_%s', session_save_path(), PATH_SEPARATOR, $session_id ); unlink($session_file); 设置,则只需删除会话文件(如果您使用的是基于文件的会话)。

sess_

会话文件前缀foreach ($sessionIdToDelete as $s) { $_COOKIE[session_name()] = $s; session_start(); unset($_SESSION); session_destroy(); session_write_close(); } 已在PHP中进行了一段时间的硬编码。

或者,这样的事情可行:

session_write_close

如果这将使用活动会话从浏览器运行,请确保在进入循环之前调用Laravel,并保留当前的session_id,以便将其设置回cookie中。