找回密码
 注册
搜索
热搜: 回贴

ASP:“在线访客”的制作方法

2009-12-13 13:56| 发布者: admin| 查看: 82| 评论: 0|原作者: 夙瑶

◆======制作原理====== 方法就......


======制作原理======
方法就是当用户访问网页时将用户的信息添加进数据库里
在添加的同时,检查数据库里是否有该用户的在线记录,如
果有,则更新该记录,如果没有就把他添加进数据库.
并删除在指定时间内没有活动的在线记录.(大概就是这样吧!)

======数据表设计=======
新建一个数据表,名为"Online"
删除自动编号字段
建立以下字段
字段名:ID 类型:数字
字段名:GUESTNAME 类型:文本
字段名:STATS 类型:文本
字段名:VISITIME 类型:日期/时间
字段名:OUTIME 类型:日期/时间

==============以下部分源码,供参考,如果写得不好,欢迎指正==============
<%
sub activeonline()
dim ip

''////删除180秒内不活动的在线记录.
sql="Delete FROM online WHERE DATEDIFF(''s'',outime,now())>180"
Conn.Execute sql

if stats="" then''//如果stats的值为空,则显示为
stats="不知在做什么?"
else
stats=stats
end if

IP=replace(Request.ServerVariables("REMOTE_HOST"),".","")''////获取IP并消去IP中的"."

''////检查Online表中是否已有这个IP的记录

sql="select id from online where id=''"&ip&"''"
set rs=conn.execute(sql)

if rs.eof or rs.bof then''////如果没有该IP记录则添加在线记录

sql="insert into online(id,guestname,stats,visitime,outime) values ("&ip&",''游客'',''"&stats&"'',Now(),Now())"

else''////如果Online表中已有该IP记录则更新该记录

sql="update online set outime=Now(),stats=''"&stats&"'',guestname=''游客'' where id=''"&ip&"''"

end if
conn.execute(sql)

end sub
%>

==========================实例===========================
将以上代码修改并保存为"Online.asp"嵌入在各网页的尾部
<%
dim conn
dim connstr
on error resume next
connstr="DBQ="+server.mappath("数据库名称.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
''保存为conn.asp文件
%>

<%
dim stats

stats="查看在线"

call activeonline()

Set rs = Server.CreateObject("ADODB.Recordset")
sql="SELECT Id,GuestName,Stats,Visitime,Outime FROM Online ORDER BY Visitime Desc"
rs.open sql,conn,1,3
total=rs.RecordCount
%>







<%do while not rs.eof%>






<%
rs.movenext
loop
%>
昵称动作来访最后活动
<%=rs(1)%><%=rs(2)%><%=rs(3)%><%=rs(4)%>

在线人数:<%=total%>
<%
rs.close
set rs=nothing
%>

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 01:20 , Processed in 0.170143 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部