在线情况维护程序-趁NB论坛重新开发,先拿东西过来,别一会又关了
[原创]在线情况维护程序
\'====================================================================
\'= Copyright (c) 2003,NB联盟 =
\'= All rights reserved. =
\'=------------------------------------------------------------------=
\'= 文件名称:Online.asp =
\'= 摘 要:在线情况维护文件 =
\'=------------------------------------------------------------------=
\'= 最后更新:eason007 =
\'= 最后日期:2004-03-31 =
\'====================================================================
Option Explicit
Response.Buffer=True
Const TimeOver=20
Dim Conn
Dim Rs,SQL
Dim UserId,SessionId,IP
Dim Tag,Key
Set Rs=server.CreateObject("adodb.recordSet")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "&Server.MapPath("Online.mdb")
Randomize Timer
Key = "NB" & (1+int(Rnd*1000000000))
Response.Cookies("Key").Path="" \'this set cookies\'path
Response.Cookies("Key").Expires = DateAdd("n",TimeOver,Now())
Tag=0
UserId=12
\'UserId=Request.Cookies ("UserId")
If UserId="" Then UserId=0 \' 0=Guest
If Request.Cookies ("Key")="" Then
Response.Cookies("Key")=Key
SessionId=key
Else
SessionId=Request.Cookies ("Key")
End If
If Request.ServerVariables("HTTP_X_ForWARDED_For")="" Then
IP= Request.ServerVariables("REMOTE_ADDR")
Else
IP=Request.ServerVariables("HTTP_X_ForWARDED_For")
End If
\'清理在线记录
\'....
SQL="select UserId,SessionId,IP from Online where IP=\'"&IP&"\' and UserId="&UserId&" and SessionId=\'"&SessionId&"\'"
Set Rs=Conn.Execute(SQL)
If Rs.EOF And Rs.BOF Then
SQL="select UserId from Online where IP=\'"&IP&"\'"
Set Rs=Conn.Execute(SQL)
If Rs.EOF and Rs.BOF Then Tag=Tag+1
SQL="select UserId from Online where UserId="&UserId
Set Rs=Conn.Execute(SQL)
If Rs.EOF and Rs.BOF Then Tag=Tag+3
SQL="select UserId from Online where SessionId=\'"&SessionId&"\'"
Set Rs=Conn.Execute(SQL)
If Rs.EOF and Rs.BOF Then Tag=Tag+5
Select Case Tag
Case 0
If UserId<>0 Then SQL="update online set ltime=\'"&now()&"\',SessionId=\'"&SessionId&"\',IP=\'"&IP&"\' where UserId="&UserId
Case 1
SQL="update online set IP=\'"&IP&"\' where UserId="&user&" and SessionId=\'"&SessionId&"\'"
Case 3
If UserId=0 Then
SQL="insert into online (UserId,IP,SessionId) values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\')"
Else
SQL="update online set UserId="&UserId&" where SessionId=\'"&SessionId&"\' and IP=\'"&IP&"\'"
End If
Case 5
If UserId=0 Then
SQL="insert into online (UserId,IP,SessionId) values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\')"
Else
SQL="update online set SessionId=\'"&SessionId&"\',IP=\'"&IP&"\' where UserId="&UserId
End If
Case 4
SQL="update online set IP=\'"&IP&"\',UserId="&UserId&" where SessionId="&SessionId
Case 6
If UserId=0 Then
SQL="insert into online (UserId,IP,SessionId) values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\')"
Else
SQL="update online set SessionId=\'"&SessionId&"\',IP=\'"&IP&"\' where UserId="&UserId
End If
Case 8
SQL="insert into online (UserId,IP,SessionId) values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\')"
Case 9
SQL="insert into online (UserId,IP,SessionId) values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\')"
End Select
Else
SQL="update online set ltime=\'"&now()&"\' where IP=\'"&IP&"\' and UserId="&UserId&" and SessionId=\'"&SessionId&"\'"
End If
\'Response.Write SQL&"
"
Conn.Execute(SQL)
SQL="select UserId,IP,SessionId from online"
Set Rs=Conn.Execute(SQL)
Do While Not rs.eof
Response.Write rs(0)&"---->"
Response.Write rs(1)&"---->"
Response.Write rs(2)&"---->
"
rs.movenext
Loop
- 新版的在线维护,除了tag=9那里比较难处理,其他的基本上都可以了。 - 2004年06月18日 21:30
- NB文章系统(NBArticle) 的SuperPassport(数据接口) 的使用及开发说明 - 2006年02月09日 06:30
- 现在开发使用的一些工具 - 2006年08月16日 23:16
- asp blog程序杂谈 - 2006年03月07日 07:11
- 纠正一些人的误区——什么才是ajax?ajax是拿来做什么的? - 2006年02月07日 18:01
- NB文章系统(NBArticle) v2.10 终于可以发布了。 - 2005年10月27日 04:25
- 用OO设计数据库结构之我解 - 2005年09月24日 19:09
- 视图的作用 - 2005年09月24日 18:58
- SB的mysql!!! - 2005年09月13日 23:09
- 最新使用mysql5的一点笔记 - 2005年08月30日 18:20
