当用户启动我的应用时,我会使用session_id()
请求PHP会话ID字符串。我将此会话ID字符串存储在MySQL表中。
该应用程序一次可以登录数十人,我需要能够通过管理员使用的程序终止用户并列出所有活动用户。到目前为止,我还没有找到像terminate_session($session_id)
这样的函数,但我需要能够终止另一个PHP用户的会话。这样做有简单的方法吗?
添加了以下回复:(不尖叫)
我不想用mysql表自己做。我希望能够调用一个终止另一个用户的php函数......这可能吗?我知道我可以通过将其集成到app表和程序中来自己完成。但是不想在它上面做更多的工作,我只是想能够使用session_id()函数提供的php session_id字符串调用php函数,然后终止进程。类似于linux kill命令。这是否存在于php ??? THX
答案 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中。