主题:  ◢█这里有个重伤█◣

小飞雁2

职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2003/6/11 11:12:28
#12003/8/30 10:07:19
尊敬的各位大哥:
我的聊天室是借用尚俊杰老师的代码,位置位于这里进去
可是不能根据在线人数自动刷新,比如原来显示3人在线,现在我进入聊天室,变成4人在线,但当我离开聊天室后,仍然显示4人在线,如此累加,有时显示几百人在线,导致许多客人感觉聊天室很多人,但进去后却没人回应的局面,影响很不好,应该怎样解决刷新问题,请指教。
首页源代码如下:


野战地丛林交流区




野战地丛林地带



现在共有<%=Application("user_online"%>人在线




请输入昵称









有朋友提到session的timeout,可是session的timeout在哪里呢?
其中exit.asp是这样的(用的Application语句):
<%
'下面几句返回离开者信息
Dim sayStr
sayStr="来自" & Request.ServerVariables("Remote_Addr")& "的" '来访者IP地址
sayStr=sayStr & "" & session("user_name") & "" '来访者呢称
sayStr=sayStr & "于" & time & "高兴而去" '来访时间
sayStr="" & sayStr & "" '红色显示

'下面几句将来访信息保存到application中
Application.Lock '先锁定
Application("show")= sayStr & "
" & Application("show")
Application("user_online")=Application("user_online")-1 '在线人数减1
Application.Unlock '解除锁定

Response.Redirect "index.asp" '重定向回首页
%>



ryonick

职务:普通成员
等级:2
金币:1.0
发贴:317
注册:2002/11/4 15:57:45
#22003/8/30 17:18:31
可以定义一个时间长度 将上线的用户放入一个数据表,如果超过该时间的用户则将在数据表中删除.具体可以参照某些有在线功能的论坛



风之翅

职务:普通成员
等级:2
金币:10.0
发贴:540
注册:2001/1/31 14:48:59
#32003/9/3 11:07:38
如果是正常离开,也就是执行了exit.asp,不会出现你说的错误.
可能是直接关掉的浏览器吧,可以改改,强迫在窗口关闭的时候执行exit.asp,很简单吧,windows.close



小飞雁2

职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2003/6/11 11:12:28
#42003/9/3 13:06:10
风之翅,您好
但windows.close这个语句应该插入哪里呢?



风之翅

职务:普通成员
等级:2
金币:10.0
发贴:540
注册:2001/1/31 14:48:59
#52003/9/3 16:07:42
对不起,我说错了,我原来的意思是在里面加入onUnload="openwin()",openwin()是打开新窗口(exit.asp)的函数
后来发现刷新也要导致这个函数的执行,这样不行。。。
不过也有解决的办法,我自己做的论坛也有同样问题,已经通过数据库解决那,就象楼上说的一样,今天时间来不及详细说了,要上班了,明天再说。



风之翅

职务:普通成员
等级:2
金币:10.0
发贴:540
注册:2001/1/31 14:48:59
#62003/9/4 10:22:41
只谈思路:
session.timeout=10
数据表设2个字段,ID和onlinetime
1.在登陆页中,将登陆者的昵称和登陆时间写入数据表
2.在聊天页中,在发言时,顺便更新数据表里的onlinetime
3.在登陆页中,删除数据表中的数据(条件为onlinetime+10<当前时间)
4.在登陆页中,提取数据表中的数据条数,也就是当前在线人数.



小飞雁2

职务:普通成员
等级:1
金币:0.0
发贴:39
注册:2003/6/11 11:12:28
#72003/9/4 15:11:26
谢谢你,老乡,我是大坪的,现在广州