惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
爱范儿
爱范儿
V
Visual Studio Blog
The Register - Security
The Register - Security
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
大猫的无限游戏
大猫的无限游戏
L
LangChain Blog
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
T
Threatpost
P
Proofpoint News Feed
美团技术团队
A
About on SuperTechFans
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
C
Check Point Blog
Vercel News
Vercel News
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
宝玉的分享
宝玉的分享
T
Tor Project blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cisco Blogs
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
S
Security @ Cisco Blogs
AWS News Blog
AWS News Blog
SecWiki News
SecWiki News
I
InfoQ
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hacker News - Newest:
Hacker News - Newest: "LLM"
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Help Net Security
B
Blog RSS Feed
H
Hacker News: Front Page
雷峰网
雷峰网
Know Your Adversary
Know Your Adversary

博客园 - 生活即技术

好久不更新了,忙的惭愧哦,思考一个应用 利用dataTable 排序的解决方法 项目中遇到的一些小问题及解决方法 常用代码 一个com+消息队列的例子 部署Com+ 2004我的爱,2005我的期待 加密解密相关 生成略缩图 上礼拜六犯的愚蠢错误 正则表达式(1) 又一新的分页方法(转帖) 用户控件的使用(二) 用户控件的使用(一) DataList的使用(二)自定义分页的实现 DataList的使用(1) DataGrid的使用(2)自定义分页 DataGrid的使用(1)
论坛在线人数统计代码
生活即技术 · 2004-12-03 · via 博客园 - 生活即技术

最近做了个小论坛,需要用到统计在线的会员名单和游客的人数,经过上午的调试,总于产生了下面的代码。
总要的思路是 :在服务器端用application 保存用户名及用户最后的登陆时间。用户的每次访问都将检查现在的时间与保存在application 中的每个用户最后登陆时间之差是否大于设定的时间如过大于,则把该用户从application中剔除.          

 
 
REM    application("Total_Land_User") 是会员在线登陆的数目 
        REM   application("Online_Land_User") 是在线会员的名单数组
        Sub Inline_State()
                
Dim Forums_ As New Forums
                
Dim Timer As Int32 = 1
                
Dim temp_Land_User(), temp_User(), User_name, Land_User, User As String
                
Dim Num, i As Int32
                Application.
Lock()

                
If Session("User_name"<> "" Then

                        Land_User 
= Session("User_name")

                        
If Application(Land_User & "LandUser_LastAccessTime"= Nothing Then               '假如第一次登陆

                                
If Application("Total_Land_User"= 0 Then Application.Set("Total_Land_User"0'假如登陆用户数为0

                                
ReDim temp_Land_User(Application("Total_Land_User"+ 1)

                                Num 
= 0

                                
If Application("Total_Land_User"> 0 Then

                                        
For i = Application("Online_Land_User").GetLowerBound(0To Application("Online_Land_User").GetUpperBound(0- 1

                                                User_name 
= Application("Online_Land_User")(i)

                                                
'  Response.Write("清点用户是的用户是:" & User_name & "<br>")

                                                
If User_name <> Land_User Then

                                                        temp_Land_User(Num) 
= User_name

                                                        Num 
+= 1

                                                
Else

                                                        Application(Land_User 
& "LandUser_LastAccessTime"= Nothing

                                                
End If
                                        
Next

                                
End If
                                temp_Land_User(Num) 
= Land_User                                                           '重新把登陆用户放到数组最后

                                Application(
"Total_Land_User"= Num + 1

                                
ReDim Preserve temp_Land_User(Application("Total_Land_User"))

                                Application.
Set("Online_Land_User", temp_Land_User)



                        
End If

                        
'    Response.Write("<br>总的用户数是:" & Application("Total_Land_User"))
                        ' Response.Write("<br> Application(Online_Land_User).GetLowerBound(0):" & Application("Online_Land_User").GetLowerBound(0))

                        
'   Response.Write("<br> Application(Online_Land_User).GetUpperBound(0):" & Application("Online_Land_User").GetUpperBound(0))
                        '   Response.Write("<br>用户列表是:")
                        '  For i = Application("Online_Land_User").GetLowerBound(0) To Application("Online_Land_User").GetUpperBound(0) - 1

                        
'     Response.Write("<br>" & Application("Online_Land_User")(i))
                        '     Response.Write("  最后登陆时间为:" & Application(Application("Online_Land_User")(i) & "LandUser_LastAccessTime"))

                        
' Next

                        Application(Land_User 
& "LandUser_LastAccessTime"= System.DateTime.Now                              '记录登陆时间


                        
ReDim temp_Land_User(Application("Total_Land_User"))

                        Num 
= 0

                        
For i = 0 To Application("Total_Land_User"- 1

                                User_name 
= Application("Online_Land_User")(i)

                                
Dim D_date As DateTime = CType(Application(User_name & "LandUser_LastAccessTime"), DateTime)

                                
If (System.DateTime.Now < D_date.AddMinutes(Timer)) Then

                                        temp_Land_User(Num) 
= User_name

                                        Num 
+= 1

                                
Else

                                        Application(Land_User 
& "LandUser_LastAccessTime"= Nothing

                                
End If

                        
Next

                        
If Num <> Application("Total_Land_User"Then

                                
ReDim Preserve temp_Land_User(Num)

                                Application(
"Online_Land_User"= temp_Land_User                                          ' 在线登陆用户数组

                                Application(
"Total_Land_User"= Num + 1                                                         '

                        
End If

                
Else

                        
'游客的统计
                        User = Session.SessionID

                        
If Application(User & "LastAccessTime"= Nothing Then                          '假如第一次登陆

                                
If Application("Total_User"= 0 Then Application.Set("Total_User"0'假如登陆用户数为0

                                
ReDim temp_User(Application("Total_User"+ 1)

                                Num 
= 0

                                
If Application("Total_User"> 0 Then

                                        
For i = Application("Online_User").GetLowerBound(0To Application("Online_User").GetUpperBound(0- 1

                                                User_name 
= Application("Online_User")(i)

                                                
If User_name <> User Then

                                                        temp_User(Num) 
= User_name

                                                        Num 
+= 1

                                                
Else

                                                        
' Application(User & "User_LastAccessTime") = Nothing

                                                
End If
                                        
Next

                                
End If
                                temp_User(Num) 
= User                                                          '重新把登陆用户session.sessionid放到数组最后

                                Application(
"Total_User"= Num + 1

                                
ReDim Preserve temp_User(Application("Total_User"))

                                Application.
Set("Online_User", temp_User)

                        
End If

                        
'Response.Write("<br>总的用户数是:" & Application("Total_User"))
                        'Response.Write("<br> Application(Online_User).GetLowerBound(0):" & Application("Online_User").GetLowerBound(0))

                        
'Response.Write("<br> Application(Online_User).GetUpperBound(0):" & Application("Online_User").GetUpperBound(0))
                        'Response.Write("<br>用户列表是:")
                        'For i = Application("Online_User").GetLowerBound(0) To Application("Online_User").GetUpperBound(0) - 1

                        
'        Response.Write("<br>" & Application("Online_User")(i))
                        '        Response.Write("  最后登陆时间为:" & Application(Application("Online_User")(i) & "User_LastAccessTime"))

                        
'Next


                        Application(User 
& "User_LastAccessTime"= System.DateTime.Now                              '记录登陆时间


                        
'检测过期的
                        ReDim temp_User(Application("Total_User"))

                        Num 
= 0

                        
For i = 0 To Application("Total_User"- 1

                                User_name 
= Application("Online_User")(i)

                                
Dim D_date As DateTime = CType(Application(User_name & "User_LastAccessTime"), DateTime)

                                
If (System.DateTime.Now < D_date.AddMinutes(Timer)) Then

                                        temp_User(Num) 
= User_name

                                        Num 
+= 1

                                
Else

                                        Application(User 
& "User_LastAccessTime"= Nothing

                                
End If

                        
Next

                        
If Num <> Application("Total_User"Then

                                
ReDim Preserve temp_User(Num)

                                Application(
"Online_User"= temp_User                          '在线的游客session.sessionid数组

                                Application(
"Total_User"= Num + 1                                         '在线游客数量

                        
End If

                
End If

                
Dim str_ As New System.Text.StringBuilder

                Me._Total_user_num.Text 
= Application("Total_User"+ Application("Total_Land_User")

                Me._Total_notland_num.Text 
= Application("Total_User"& "人"

                If IsArray(Application("Online_Land_User")) Then

                        
For i = Application("Online_Land_User").GetLowerBound(0To Application("Online_Land_User").GetUpperBound(0- 1

                                User_name 
= Application("Online_Land_User")(i)
                                str_ 
= str_.Append(User_name & ",")
                        
Next

                        Me._Total_land_num.Text 
= str_.ToString
                
End If

                Application.
UnLock()

        
End Sub