列出用户的Php会话并远程记录该会话

时间:2010-11-19 00:49:42

标签: php

在php中,我创建一个具有用户id的会话。所以我做了

$_SESSION['id'] = $id;

所以说对于用户3.有没有办法列出用户3的所有会话?还远程终止会话(将其记录下来)。我希望为用户提供类似gmail的内容,以便他们可以查看其帐户的会话。我还想让他们远程注销其用户帐户的会话。我的大部分网站都已完成,但这是我非常不确定的。我甚至不确定Php是否支持这一点。我想这样做是为了加强安全性。所以说有人去学校或某处忘记注销他们可以通过他们的帐户从另一台计算机远程执行。此外,我计划在会议中存储他们的IP,也是最后一次。所以它也可以列出IP地址,上次。有关于如何做到这一点的任何线索?有没有像这样的PHP会话?

2 个答案:

答案 0 :(得分:6)

您可以设置会话处理程序,将会话数据写入数据库。然后,您可以分析该表以查找具有相同ID的其他会话。

http://php.net/manual/en/function.session-set-save-handler.php

这就是会话方式。但我建议你自己实现这个,因为session-data是序列化的,所以你必须读取所有会话,反序列化它并搜索一个键“id”。

您可以使用(假设)session-id,user-id,ip和time创建一个表。每次用户登录时,您都会将记录放入该表中,并且每次请求都应该更新时间(类似“上次见过”)。 如果您想知道是否有其他用户拥有一个ID,只需选择user-id列。可以通过session-id识别“合法”用户。 接下来,如果您想要“远程注销”会话,您可以添加列“force_logout”或其他内容。现在在下一个请求(“非法”用户)上你读取了这个标志并杀死了它的会话。

答案 1 :(得分:0)

您可以在数据库中保留session_id(通过session_id()函数获取,而用户登录)以及远程会话终止(例如通过REST)用户ID使用下一个函数:

public function drop_session($session_id) {
        if ($session_id) {
            session_id($session_id);
            //session_start();
            session_destroy();
            session_commit();
        }
    }