ASP 统计用户在线时间
我要做个会员系统,要统计每个会员累计在线时间,当然可以把网页打开挂机,可是怎么可能实现呢,asp+access,谢谢,详细一些....
我要做个会员系统,要统计每个会员累计在线时间,当然可以把网页打开挂机,可是怎么可能实现呢,asp+access,谢谢,详细一些.
展开
展开全部
楼上理解有点问题吧,楼主是说他们需要统计用户的累计在线时间,跟挂QQ差不多的,并不是在页面上显示用户的在线时间。
用Ajax是可以的,不过你没有JS的基础实现起来有点困难,JS有一点不好,如果用户浏览器设置禁止运行JS脚本的话,你的成果就一点用也没有了;
如果你自己对ASP还算熟悉的话,我可以给你讲一个不用Ajax的思路,但是考虑的服务器的负载,统计的精度不能太高,不然会增加服务器的负载:
在你在数据库里用一个叫time的字段来存储累计时间;
在用户登录成功后的第一个页面定义一个session("time1")=now()来表示用户的登录时间;
新建一个页面refresh.asp,这个页面是用来实时上传当前时间的,页面内容为:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#Include File="../Conn.asp"-->
<%
dim timers,timestr,time_now
time_now=now()
timestr="select * from [你的表] where username='"&session("username")&"'"
set timers=server.CreateObject("adodb.recordset")
timers.open timestr,kaConn,1,3
timers("time")=timers("time")+datediff("s",session("time1"),time_now)
'累计时间timers("time")=原有时间+(当前时间 - 初始时间),datediff()是一个计算时间差值的函数,第一个参数是设置差值的单位,"s"表示差值单位为秒,第二个参数是时间1,第三个参数是时间2,差值为时间2减时间1;
timers.update
timers.close
set timers=nothing
kaConn.close
set kaConn=nothing
session("time1")=now() '从新设置初始时间为当前时间,为下一次计算作准备
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="refresh" content="60"> (这里是设置页面刷新时间间隔的,也就是确定你的统计精度,这里60的意思是60秒钟刷新一次,也就是上传一次数据)
<title>refresh</title>
</head>
<body>
</body>
</html>
上面的refresh.asp不是单独使用的而是作为一个框架窗口嵌入到用户登录后的所有需要统计时间的页面中,不过你可以设置这个框架的大小为0x0,这样用户是看不到这窗口的,但是这个隐藏的refresh.asp页面却在不段的更新着用户的累计在线时间。因为这个隐藏页面每60秒就刷新一次,就会执行上面的程序来更新数据库,但是主页面是看不到刷新的。
下面这个是用来插入隐藏页面的代码,写在需要统计时间的页面的底部吧
<iframe src="refresh.asp" name="refresh" width="0" height="0" allowtransparency="true" scrolling="no" frameborder="0">
还有不懂的就加我吧QQ:1010015299
用Ajax是可以的,不过你没有JS的基础实现起来有点困难,JS有一点不好,如果用户浏览器设置禁止运行JS脚本的话,你的成果就一点用也没有了;
如果你自己对ASP还算熟悉的话,我可以给你讲一个不用Ajax的思路,但是考虑的服务器的负载,统计的精度不能太高,不然会增加服务器的负载:
在你在数据库里用一个叫time的字段来存储累计时间;
在用户登录成功后的第一个页面定义一个session("time1")=now()来表示用户的登录时间;
新建一个页面refresh.asp,这个页面是用来实时上传当前时间的,页面内容为:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#Include File="../Conn.asp"-->
<%
dim timers,timestr,time_now
time_now=now()
timestr="select * from [你的表] where username='"&session("username")&"'"
set timers=server.CreateObject("adodb.recordset")
timers.open timestr,kaConn,1,3
timers("time")=timers("time")+datediff("s",session("time1"),time_now)
'累计时间timers("time")=原有时间+(当前时间 - 初始时间),datediff()是一个计算时间差值的函数,第一个参数是设置差值的单位,"s"表示差值单位为秒,第二个参数是时间1,第三个参数是时间2,差值为时间2减时间1;
timers.update
timers.close
set timers=nothing
kaConn.close
set kaConn=nothing
session("time1")=now() '从新设置初始时间为当前时间,为下一次计算作准备
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="refresh" content="60"> (这里是设置页面刷新时间间隔的,也就是确定你的统计精度,这里60的意思是60秒钟刷新一次,也就是上传一次数据)
<title>refresh</title>
</head>
<body>
</body>
</html>
上面的refresh.asp不是单独使用的而是作为一个框架窗口嵌入到用户登录后的所有需要统计时间的页面中,不过你可以设置这个框架的大小为0x0,这样用户是看不到这窗口的,但是这个隐藏的refresh.asp页面却在不段的更新着用户的累计在线时间。因为这个隐藏页面每60秒就刷新一次,就会执行上面的程序来更新数据库,但是主页面是看不到刷新的。
下面这个是用来插入隐藏页面的代码,写在需要统计时间的页面的底部吧
<iframe src="refresh.asp" name="refresh" width="0" height="0" allowtransparency="true" scrolling="no" frameborder="0">
还有不懂的就加我吧QQ:1010015299
美林数据技术股份有限公司
2023-07-25 广告
2023-07-25 广告
美林数据Tempo大数据分析平台,它是一款集数据接入、数据处理、数据挖掘、数据可视化、数据应用于一体的软件产品。它秉持“智能、互动、增值”的设计理念,面向企业级用户提供自助式数据探索与分析能力,为企业提供从BI到AI的一体化数据分析与应用解...
点击进入详情页
本回答由美林数据技术股份有限公司提供
展开全部
楼上的是老方法了..不怎么实时..
用ASP+AJAX可以达到实时无刷新的效果..
我只是有思路,没写出来..建议去AJAX的论坛翻翻,应该有的.
用ASP+AJAX可以达到实时无刷新的效果..
我只是有思路,没写出来..建议去AJAX的论坛翻翻,应该有的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Cookies
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询