|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。办理|谈天室|统计|在线在做一个在线交换的网站时,有个成绩很令我头疼,就是关于及时统计在线用户的成绩,客户请求:统计以后在耳目数、旅客人数、会员人数、在线用户列表,包含旅客、会员和办理员(假如是旅客,则主动天生旅客的ID,假如是会员,则显现会员姓名)。由于它请求有及时性,则起首我将用global.asa办理的设法pass失落。
成绩的关头是怎样判别用户已分开,和当用户分开时怎样实行一个文件或一个函数。
经由和网上一些伴侣的切磋,终究办理了这个成绩。
办理的道理为:编写一个通用页面,所谓的通用页面,就是使用里的每一个页面都包括这个页面,比方:header.asp,在这个页面里,用XMLHTTP写一段代码,这段代码的感化是每隔10秒或20秒就向服务器发送一个哀求,目标是更新以后用户的在线工夫并删除在线工夫凌驾必定工夫的用户,使数据库中的在线用户纪录坚持必定的及时性。
次要完成办法为:
新建一数据库,字段称号分离为:id(字符),name(字符),user(数字)tt(日期),admin(权限代码,0-一般用户,1-办理员)
表名:online
header.asp↓
============================================================
<%
......
ifsession("s_in")1andsession("s_name")=""then假如用户是第一次上岸
rs.open"select*fromonline",conn,3,3
rs.addnew
rs("id")=session.sessionID
rs("name")="旅客"&session.sessionID
rs("user")=00暗示用户未上岸,是旅客身份
rs("tt")=now
rs.update
rs.close
session("s_in")=1设置用户的材料已存进数据库,暗示已在线
endif
ifsession("s_name")""then假如用户已经由过程登录框登录
rs.open"select*fromonlinewhereid="&session.sessionID&"",conn,3,3
rs("name")=session("s_name")
rs("admin")=session("s_admin")将用户的姓名更新为会员称号
rs("user")=1暗示用户已上岸,是会员身份
rs("tt")=now将以后体系工夫设置为用户的上岸工夫
rs.update
rs.close
endif
......
%>
......
<head>
......
<scriptlanguage=javascript>
functionTest()
{
varxmlhttp=newActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("POST","onceonline.asp",false);//向onceonline.asp发送更新哀求
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send();
}
setInterval("Test();",10);//10秒钟发送一次更新哀求
</script>
......
</head>
......
==========================================================
onceonline.asp
<%
rs.open"selectttfromonlinewhereid="&session.sessionID&"",conn,3,3
rs("tt")=now()更新以后在线用户的在线工夫
rs.update
rs.close
rs.open"deletefromonlinewheredatediff(s,tt,now())>60",conn,3,1删除超时用户
%>
</p>使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。 |
|