`

新版的在线维护,除了tag=9那里比较难处理,其他的基本上都可以了。

阅读更多
<font face=\"宋体\" size=\"2\">

<font face=\"宋体\" size=\"2\">\'====================================================================
\'=                   Copyright (c) 2004,NB联盟                      =
\'=                      All rights reserved.                        =
\'=------------------------------------------------------------------=
\'=                     文件名称:Online.asp                         =
\'=                     摘    要:在线情况维护文件                   =
\'=------------------------------------------------------------------=
\'=                     最后更新:eason007                           =
\'=                     最后日期:2004-06-17                         =
\'====================================================================
Option Explicit
Response.Buffer=True

<font face=\"宋体\" size=\"2\">Const TimeOver=20
Dim Conn
Dim Rs,SQL
Dim UserId,SessionId,IP
Dim Tag,Key

<font face=\"宋体\" size=\"2\">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")

<font face=\"宋体\" size=\"2\">Randomize Timer
Key = "NB" & (1+Int(Rnd*1000000000))

<font face=\"宋体\" size=\"2\">Response.Cookies("Key").Path=""            \'set cookies path
Response.Cookies("Key").Expires = DateAdd("n",TimeOver,Now())

<font face=\"宋体\" size=\"2\">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
IP=GetUserIp

<font face=\"宋体\" size=\"2\">\'清理在线记录
\'....

<font face=\"宋体\" size=\"2\">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    \'判断库内是否有完整在线记录
\'no
    SQL="select UserId from [Online] where IP=\'"&IP&"\'"
    Set Rs=Conn.Execute(SQL)
    If Not Rs.EOF And Not Rs.BOF Then Tag=Tag+1
    SQL="select UserId from [Online] where UserId="&UserId
    Set Rs=Conn.Execute(SQL)
    If Not Rs.EOF And Not Rs.BOF Then Tag=Tag+3
    SQL="select UserId from [Online] where SessionId=\'"&SessionId&"\'"
    Set Rs=Conn.Execute(SQL)
    If Not Rs.EOF And Not Rs.BOF Then Tag=Tag+5
   
    Select Case Tag
    Case 0
    \'没有ip、cookies、userid
        SQL="insert into [Online] (UserId,IP,SessionId,LTime,STime)"
        SQL=SQL&" values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\',\'"&Now()&"\',\'"&Now()&"\')"
    Case 1
    \'有ip,即网吧用户
    \'因如果是刷新或者游客变会员的话,起码有SessionId
    \'注:刷新tag=9,游客变会员tag=6
  SQL="insert into [Online] (UserId,IP,SessionId,LTime,STime)"
        SQL=SQL&" values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\',\'"&Now()&"\',\'"&Now()&"\')"
    Case 3
    \'有id,
    \'身份可能是游客或者会员
    \'刷新or重登陆,但排除刷新,因刷新tag=8
        If UserId=0 Then
            SQL="insert into [Online] (UserId,IP,SessionId,LTime,STime)"
   SQL=SQL&" values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\',\'"&Now()&"\',\'"&Now()&"\')"
        Else
            SQL="update [Online] set IP=\'"&Ip&"\',SessionId=\'"&SessionId&"\',LTime=\'"&Now&"\' where UserId="&UserId
        End If
    Case 5
    \'有sessionid
    \'不管他是什么身份,只管更新该台机的所有信息,因为一台机只可以干一件事
  SQL="update [Online] set IP=\'"&Ip&"\',UserId="&UserId&",LTime=\'"&Now&"\' where SessionId=\'"&SessionId&"\'"
    Case 4
    \'有ip、id,但不保证是同一条记录
    \'同一记录时,判断为会员换机,update
    \'不同时,以id为主,游客insert,会员update
  SQL="select UserId from [Online] where IP=\'"&IP&"\' and UserId="&UserId
  Set Rs=Conn.Execute(SQL)
  If Not Rs.EOF And Not Rs.BOF Then
   SQL="update [Online] set IP=\'"&Ip&"\',SessionId=\'"&SessionId&"\',LTime=\'"&Now&"\' where IP=\'"&IP&"\' and UserId="&UserId
  Else
   If UserId=0 Then
    SQL="insert into [Online] (UserId,IP,SessionId,LTime,STime)"
    SQL=SQL&" values ("&UserId&",\'"&IP&"\',\'"&SessionId&"\',\'"&Now()&"\',\'"&Now()&"\')"
   Else
    SQL="update [Online] set IP=\'"&Ip&"\',SessionId=\'"&SessionId&"\',LTime=\'"&Now&"\' where UserId="&UserId
   End If
  End If
    Case 6
    \'有ip、sessionid
 \'同一记录时,游客变会员,update
 \'不同时,参照tag=5,update
        SQL="update [Online] set IP=\'"&Ip&"\',UserId="&UserId&",LTime=\'"&Now&"\' where SessionId=\'"&SessionId&"\'"
    Case 8
    \'有id、sessionid
    \'同一记录时,参照tag=5,update
    \'不同时,游客时,参照tag=5,update,会员时,以sessionid为主
  SQL="select UserId from [Online] where SessionId=\'"&SessionId&"\' and UserId="&UserId
  Set Rs=Conn.Execute(SQL)
  If Not Rs.EOF And Not Rs.BOF Then
   SQL="update [Online] set IP=\'"&Ip&"\',LTime=\'"&Now&"\' where UserId="&UserId
  Else
   If UserId=0 Then
    SQL="update [Online] set IP=\'"&Ip&"\',UserId="&UserId&",LTime=\'"&Now&"\' where SessionId=\'"&SessionId&"\'"
   Else
    SQL="delete [Online] where UserId="&UserId
    Conn.Execute(SQL)
    SQL="update [Online] set IP=\'"&Ip&"\',UserId="&UserId&",LTime=\'"&Now&"\' where SessionId="&SessionId&"\'"
   End If
  End If
    Case 9
    \'有ip、id、sessionid
    \'同一记录时,永远不可能发生
    \'不同时,组合:id&ip,id&sessionid,ip&sessionid
   
    \'清理库
  SQL="delete [Online] where IP=\'"&Ip&"\' and UserId="&UserId
  Conn.Execute(SQL)
  SQL="delete [Online] where SessionId=\'"&SessionId&"\' and UserId="&UserId
  Conn.Execute(SQL)
  SQL="delete [Online] where IP=\'"&Ip&"\' and SessionId=\'"&SessionId&"\'"
  Conn.Execute(SQL)
  SQL="delete [Online] where UserId="&UserId
  Conn.Execute(SQL)
  
        SQL="update [Online] set IP=\'"&Ip&"\',UserId="&UserId&",LTime=\'"&Now&"\' where SessionId=\'"&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)

<font face=\"宋体\" size=\"2\">SQL="select UserId,IP,SessionId,STime,LTime from [Online]"
Set Rs=Conn.Execute(SQL)
Do While Not rs.eof    \'show list
 Response.Write rs(0)&"---->"
 Response.Write rs(1)&"---->"
 Response.Write rs(2)&"---->"
 Response.Write rs(3)&"---->"
 Response.Write rs(4)&"---->
"
 rs.movenext
Loop

<font face=\"宋体\" size=\"2\">Function GetUserIp()
 Dim Ip,Tmp
 Dim i,IsErr
 IsErr=False
 
 If Request.ServerVariables("HTTP_X_ForWARDED_For")="" Then
  Ip=Request.ServerVariables("REMOTE_ADDR")
 Else
  Ip=Request.ServerVariables("HTTP_X_ForWARDED_For")
 End If
 
 If Len(Ip)>15 Then
  IsErr=True
 Else
  Tmp=Split(Ip,".")
  If Ubound(Tmp)=3 Then
   For i=0 To Ubound(Tmp)
    If Len(Tmp(i))>3 Then IsErr=True
   Next
  Else
   IsErr=True
  End If
 End If
 
 If IsErr Then
  GetUserIp="1.1.1.1"
 Else
  GetUserIp=Ip
 End If
End Function


[点击查看详细]
分享到:
评论

相关推荐

    JSP2.0 Tag 使用

    在JSP2.0技术规范中,引入了一种新的标签机制,被称为Tag Files(标签文件),其主要目标是为了解决传统JSP页面中脚本元素的使用问题,提供一个更为简洁和高效的方式来进行页面动态内容的添加。开发者可以利用标签...

    js中利用tagname和id获取元素的方法

    在JavaScript(JS)中,获取页面上的特定元素是前端开发中的基本操作。本文将介绍三种利用`tagName`和`id`获取元素的方法。这些方法在处理网页交互和动态更新内容时非常有用。以下是对每种方法的详细说明: 1. **...

    PyPI 官网下载 | django-taggit-0.17.4.tar.gz

    它通过自定义字段类型和管理器,让开发者可以像处理其他模型字段一样处理标签。此外,`django-taggit` 还支持标签云、标签关系以及基于标签的查询,大大简化了数据组织和用户交互。 **安装与使用** 要在项目中使用...

    display tag使用总结文档

    Display Tag是Java Web开发中的一款强大且功能丰富的开源表格标签库,它为开发者提供了一种在JSP页面中处理和展示表格数据的高效方式。这个使用总结文档将深入探讨Display Tag的功能、配置、使用方法以及常见问题的...

    MP3_Tag_Viewer.rar_tag mp3

    它可能会调用其他类或模块来解析MP3文件的ID3v1和ID3v2标签,然后将这些信息显示在界面上,同时接收用户输入,更新标签信息。 3. **cMP3ID3v2.cls和cMP3ID3v1.cls**:这两个是类文件,分别代表ID3v2和ID3v1标签的...

    ZL400A-G_EN_Magnetic_9kG_Tack_Tag_zl400a_

    标题“ZL400A-G_EN_Magnetic_9kG_Tack_Tag_zl400a_”和描述“ZL400A-G_EN_Magnetic_9kG_Tack_Tag”暗示了一个关于ZL400A-G型号的产品,它与磁性9kG的标签技术有关。我们可以推测这是一款专门设计用于高磁场环境的...

    tld,TreeTag组件

    `logictags.tld`可能是逻辑操作相关的标签库,它可能包含一些条件判断、循环等控制流标签,帮助开发者在JSP页面上进行复杂的逻辑处理,而无需过多地编写Java代码,提高了代码的可读性和维护性。 `calendartag.tld`...

    一个简单的用户维护模块

    综上所述,这个简单的用户维护模块涵盖了Java Web开发的多个核心方面,从后端的数据库操作到前端的用户交互,以及在它们之间的业务逻辑处理。理解和掌握这些知识点,对于构建任何基于Java的Web应用程序都至关重要。

    2021最新迅搜cms站群系统2.2版本【tag目录】.zip

    首先,站群系统是用于管理和维护多个相关网站的工具,通过集中化的管理平台,可以同时对多个独立站点进行内容更新、SEO优化和数据分析。迅搜CMS站群系统2.2版本在此基础上进一步提升了用户体验和性能效率,使得在大...

    代码点击右侧我的Tag可快速添加

    记住,编写VBA代码时要遵循良好的编程习惯,包括适当的注释、错误处理和代码组织,这样可以让你的代码更易于理解和维护。同时,学习和理解Excel对象模型对于深入利用VBA是非常重要的,因为所有Excel元素(如工作簿、...

    jsp计算三角形的面积

    **正文** 在IT行业中,JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态网页。...在实际开发中,JSP和自定义Tag的应用远不止于此,它们可以用来构建复杂的Web应用程序,处理各种业务逻辑和用户交互。

    react-reacttaginput一个极其简单的标签React组件

    在React中,组件是构建UI的基本单元,可以独立地管理自己的状态和行为。 "react-tag-input"是一个专门针对React开发的组件,它允许用户在输入框中添加、编辑和删除标签。这种类型的组件在许多应用中非常常见,如...

    正则表达式处理html文本例子

    9. **学习资源**:为了深入理解和使用正则表达式,可以参考在线教程,如RegExr、MDN Web Docs上的正则表达式指南,或者C#的官方文档。 通过理解以上知识点,你将能够运用正则表达式有效地处理HTML文本,无论是简单...

    tagFileDemo

    - 定义Tag Handler类:编写一个Java类,实现Tag接口或SimpleTag接口,定义处理标签的方法。 - 编写TLD(Tag Library Descriptor)文件:这是XML文件,包含了关于自定义标签的信息,如标签名、属性、对应的Tag ...

    Core JSTL - Mastering the JSP Standard Tag Library.pdf

    ### 关于《Core JSTL - Mastering the JSP Standard Tag Library》 #### 一、JSP标准标签库(JSTL)概述 在深入探讨《Core JSTL - Mastering the JSP Standard Tag Library》这本书之前,我们先来了解一下JSP标准...

    python lxml==4.8.0

    9. **与BeautifulSoup的比较**: 虽然BeautifulSoup是另一个流行的HTML解析库,但lxml在速度和功能上更胜一筹,尤其是在处理大型文档和需要XPath或CSS选择器时。 总结,lxml库是Python处理XML和HTML的首选工具,...

    jsp问题处理集,解决大多数jsp的常见问题

    JSTL提供了许多预定义的标签,可以帮助开发者编写更简洁、更易于维护的JSP页面。新手可能在使用JSTL标签时遇到导入问题、标签使用错误或不理解标签功能。 5. **Servlet生命周期与JSP转换**: JSP页面会被编译成...

    C#做的计算器

    将数字0-9、加号、减号、乘号、除号、等号、清除键(CE)和等于号(=)按钮拖放到窗体上。记得设置好按钮的文字和大小。 接下来,我们需要处理按钮的点击事件。在代码视图中,我们为每个按钮添加一个Click事件处理...

    【JSTL表达式依赖包】jakarta-taglibs-standard-1.1.2

    JavaServer Pages Standard Tag Library(JSTL)是Java Web开发中的一个重要组件,它提供了一组预定义的标签,用于简化JSP页面中的业务逻辑处理,从而使得代码更加清晰、易于维护。在IDEA这样的集成开发环境中,虽然...

Global site tag (gtag.js) - Google Analytics