在线人员怎么统计

i594yangyang 2003-10-17 07:40:12
请问
一个论坛在线人员怎么统计啊,
除了用global.asa在application中检测,还有其他方法吗?
我曾经用数据库专门建立一张表来存储在线人员的信息,
若有有人来访问就把session("user_id")存入表中
但是,我不知道当一个用户离开后,怎么检测到,并把表中关于他信息删掉
...全文
44 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
i594yangyang 2003-10-19
  • 打赏
  • 举报
回复
Microsoft Acess 2002 的数据库:
yang_yang.mdb
表名是:online

字段:id ------ `自动编号
ip ------ 文本(40位)
time ---- 日期/时间
i594yangyang 2003-10-19
  • 打赏
  • 举报
回复
我修改了一下,用于5秒刷一次,时间是可以改的
不知道实际中可不可以用,因为我这是只有一台电脑
请高手看看有什么不妥和错误的地方,有设备的同志帮我试一下
用法:可以放在一个独立的框架中<frameset>

<%
'******************** yang_yang的在线人数统计程序 ******************************
'******************************************************************************
%>
<html>
<head>
<meta http-equiv = "refresh" content = "5">
</head>
<body>
<%

connstr = "DBQ="+server.mappath("yang_yang.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set db = Server.CreateObject("ADODB.Connection")
db.Open connstr
set rs = server.createobject("adodb.recordset")

ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If ip = "" Then ip = Request.ServerVariables("REMOTE_ADDR") end if

sql = "select * from online where time <= dateadd('s',-5,now()) and ip = '" & ip & "'"
rs.Open sql,db,1,2
if rs.eof and rs.bof then
rs.AddNew
end if
rs("ip") = ip
rs("time") = now()
rs.Update

sql = "delete * from online where time < dateadd('s',-5,now())"
set rs_1 = server.createobject("adodb.recordset")
rs_1.open sql,db,1,2

sql = "select * from online"
set rs_2 = server.createobject("adodb.recordset")
rs_2.open sql,db,1,1

Response.Write "共" & rs_2.RecordCount & "人在线<br> <br>"
for i = 1 to rs_2.RecordCount
Response.Write "用户" & i & ":" & rs_2("ip") & "在线<br>"
rs_2.MoveNext
next

set rs = nothing
set rs_1 = nothing
set rs_2 = nothing
db.Close
set db = nothing
%>
</body>
</html>
<%
'******************************************************************************
'******************************************************************************
%>
i594yangyang 2003-10-18
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/read_article.asp?id=17310 好象是用来计算访问流量的.

用global.asa也不好,
我要做的是一个要放在免费主页上,用global.asa,听说要放在什么根目录下,不方便啊

我自己也找了一个,但不好用,好象若有人下线后,20分钟才被检测到的




<%
'===================================================================================================
'
'******************** 冰翎在线人数统计程序 V1.0 ******************************
'
' 本站程序由 『冰翎工作室』--冰淇淋剑客 独立制作!请尊重本人的劳动成果
'  
' 『冰翎工作室』─━╃→用实力打造个性
'
'* 作者:冰淇淋剑客  
'* 网站:http://www.blbcn.com  
'* 电子邮件:bingqilinjianke@163.com  
'* QQ:68156987
'* 住址:江苏无锡
'******************************************************************************
'
' 版权所有·抄袭挪用必究
'
'===================================================================================================
'---------定义变量
dim rs
dim ip
dim timeout
dim x
dim conn
dim dbpath
'---------定义变量结束

'---------建议数据库链接
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("zai.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
'---------建立数据库链接完成

'---------新建数据库RS对象
set rs = server.createobject("adodb.recordset")
'---------建立数据库RS对象完成

'---------读取客户端IP地址
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") '若是对方使用的是代理服务器上网的话,用Request.ServerVariables("HTTP_X_FORWARDED_FOR")可以得到对方的真实IP,若对方不是通过代理服务器上网的话,则IP的值为空
If ip = "" Then ip = Request.ServerVariables("REMOTE_ADDR") '如果IP的值为空,则得到他的本地客户端地址
'---------IP读取完毕

'---------读出数据库内近20分钟所加入的新内容数,group by ip-表IP值相同的记作1
sql="select ip from zai where time >= dateadd('n',-20,now()) group by ip"
rs.Open sql,conn,1,1
zai=rs.RecordCount
rs.Close
'---------得到在线人数值

'---------查看数据库中是否已经有相同的值,有则 x="yes"没有则x="no"
sql="select ip from zai where ip='" & ip & "'"
rs.Open sql,conn,1,1
if rs.eof and rs.bof then
x="yes"
else
x="no"
end if
rs.close
'--------判断完毕

'--------如果数据库中没有相同的值则加入一个新值
if x="yes" then
sql="select top 1 * from zai"
rs.Open sql,conn,3,2
rs.AddNew
rs("ip")=ip
rs("time")=now()
rs.update
rs.close
end if
'--------判断加入完毕


'--------删除20分钟以前所加入的值
timeout = dateadd("n", -20, now())
sql="delete * from zai where time < #" & timeout & "#"
conn.Execute sql
'--------删除完毕

'--------关闭数据对象
set rs=nothing
conn.Close
set conn=nothing
%>
document.write("共<%=zai%>人在线")

'===================================================================================================
dafei0320 2003-10-17
  • 打赏
  • 举报
回复
global.asa里这样写!!!
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
sub Application_OnStart

dim zaixian,ip,time1,zaixian1
application("zaixian")=0


End sub

Sub Session_OnStart

application.lock
application("zaixian")=application("zaixian")+1
application.unlock
session("id")=""
End Sub

Sub Session_OnEnd
54duke 2003-10-17
  • 打赏
  • 举报
回复
ceocio(MS MVP)(From SWJTU) ( )
介绍的就很好了 可以防止刷新吧
vxzd 2003-10-17
  • 打赏
  • 举报
回复
up
bill1980 2003-10-17
  • 打赏
  • 举报
回复
UP
qdubit 2003-10-17
  • 打赏
  • 举报
回复
关注!
ceocio 2003-10-17
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/read_article.asp?id=17310
《ASP.NET开发典型模块大全(修订版)》以关键技术和热点技术为核心,通过27个典型模块和5章热点技术,全面地介绍了如何使用asp.net进行各领域的web项目开发。全书共3篇分为32章,第1篇关键模块篇,覆盖网站开发的关键领域,内容涉及论坛、博客、播客、网络硬盘、电子邮件、在线考试、网站备忘录、在线短消息、网站访问量统计与分析、系统后台管理权限分配等网站关键模块;第2篇常见模块篇,覆盖网站开发的各个领域,内容涉及网站会员注册及登录、会员密码找回、留言本、上传与下载、图片资源管理、搜索引擎、网上问卷调查、rss在线订阅、聊天室、购物车、在线银行支付、手机短消息管理、在线音乐、投票系统、万能打印、数据自动备份与恢复等常见模块;第3篇热点技术应用篇,解决网站开发在某个领域遇到的技术难题,内容涉及linq数据访问技术、安全技术、服务技术、ajax、高级应用技术等。 《ASP.NET开发典型模块大全(修订版)》附有配套光盘。光盘提供了书中所有案例的全部源代码,并经过精心调试,在windows xp和windows 2000下全部通过,保证能够正常运行。此外,光盘中还提供有编程词典试用版软件。 《ASP.NET开发典型模块大全(修订版)》案例涉及领域广泛,实用性非常强。学习本书读者可以了解各个领域的特点,能够针对某一行业进行软件开发,也可以通过光盘中提供的模块源代码进行二次开发,以减少开发系统所需要的时间。本书适合各级软件开发人员学习使用,也可供大、中专院校师生学习参考。

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧