在SESSION中打印所有登录用户?

时间:2011-06-30 20:01:27

标签: php session variables

我有一个支持大约80个用户的SESSION,我想打印所有用户名并每60秒左右刷新一次页面。我知道如何刷新页面,但<?php print_r($_SESSION['username']); ?>仅打印与我的个人会话相关联的用户名。

6 个答案:

答案 0 :(得分:4)

$ _ SESSION对于网站的每个用户都是唯一的,它使用cookie。 print_r只能显示当前$ _SESSION的内容。您需要一个数据库来了解所有用户的名称和Javascript以刷新页面。

答案 1 :(得分:4)

不幸的是,会话变量不能像那样工作。

为了跟踪每个会话,一种方法是将每个登录/连接记录到一个附有时间戳的MySQL表。

然后在您的跟踪页面上,让它删除非活动用户,然后选择其余用户:

mysql_query("DELETE FROM sessions WHERE time < " . time() - 60);

$result = mysql_query("SELECT * FROM sessions");

while ($row = mysql_fetch_assoc($result)) {

    echo $row['username'] . "<br />";
}

然后投入<meta http-equiv="refresh" content="60">来刷新页面。

答案 2 :(得分:1)

也许您想要使用类似“memcached”的东西并在那里使用变量。

如果您将会话存储在单独的文件夹中(而不是默认的/ tmp文件夹),您可以在该文件夹上执行一个列表,以查找服务器上当前设置的会话数,知道它不是完美的确切的数字。

数据库或memcached可能是您最好的可能性。

答案 3 :(得分:1)

会话数据存储在文件中,具体取决于您可以解析这些文件的应用程序设置。在我看来,这不是一个非常合适的解决方案,但它可以解决问题。

答案 4 :(得分:0)

您需要添加当前登录用户的数据库表,每次有人登录,将他们的ID添加到表中,当他们退出(或超时)删除ID时,您可以保存其他信息ID,例如time,sessionID或IP地址或这些的组合。它会让你很好地了解谁在线。

为了更进一步,您可以拥有一个字段,其中包含每个页面最后一次更改的时间,每次为该人员提供一个覆盖此值的页面时,这可以用于注销那些只是离开您的网站而不注销。例如,如果他们不刷新页面30分钟,您可以将该人员记录在网站之外。

答案 5 :(得分:0)

我会

  • 在线添加&#39;用户表中的列。
  • 每当有人登录或加载他们有权访问的页面时,我都会将在线列设置为当前时间戳。
  • 查看在线好友列表时,我会在60秒内查询所有在线的人
  • 然后确保您的在线好友列表页每60秒更新一次。