通过Session只能建立与某一用户的对话,不能统计整个论坛的在线人数实现在线用户列表的方法很多,个人认为比较适当和方便的方法(也是动网先锋论坛使用的方法)是使用数据库。
在数据库里建立一个online表,这个表中的主要字段有:userIP,userName,optime其中userIP记录访问者的IP地址,以作为在线者的唯一性标识;userName用于记录该IP在线人的用户名;optime用于记录用户最后一次操作的时间。
在页面中编写代码,使得在用户打开该页面时,对用户的IP进行检测,如果在online表中不存在,则将用户的IP、username(如果没有登录可以使用其他代码设为“访客)和当前时间添加到表中;如果online表中存在用户的IP,则对optime进行更新,更新为当时的时间;
并在每次页面打开时执行另一个过程:对超期的IP地址进行删除,具体做法是判断optime和Now()的差,如果超过你设定的时间,则删除该IP记录;在显示在线列表的时候,就可以只是遍历online表的记录了。并且由于使用数据库,功能上还可以有大的扩充,源代码,建议去看动网先锋BBS的相关文件吧。