| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1136 人关注过本帖
标题:来访者记录并显示,显示结果有问题 - [asp]
取消只看楼主 加入收藏
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
来访者记录并显示,显示结果有问题 - [asp]
页面地址:   http://elelab.snnu.
在global.asa中通过session_onstart来记录来访者的IP信息,存放在applicaiotn("vs")中,然后再上面的页面中显示出来。
结果在同一台计算机上,多个窗口里显示出不同结果,为什么会不同,望指教!
visitor.rar (1.35 KB)

global.asa:
程序代码:
<script language="vbscript" runat="server">

Sub Application_OnStart
dim vs(1)
dim ipn(1)
Application("vss")=0
Application("vs")=vs
Application("ipn")= ipn
End Sub

Sub Session_OnStart
dim vss,vs,vs1,ipn,n
Application.Lock
vs=Application("vs")
vss=Application("vss")
ipn=Application("ipn")
n = vss
vip = request.servervariables("http_x_forwarded_for") 
if vip = "" then vip = Request.ServerVariables("Remote_Addr") 
if vss > 0 then 
    do while vs(vss)<> vip and vss > 0
        vss = vss - 1
    loop
end if 
if vss = 0 then
    n=n+1
    redim Preserve vs(n)
    redim Preserve ipn(n)
    vs(n) = vip
    ipn(n) = 1
    Application("vs")=vs
    Application("ipn")=ipn
    Application("vss")=n
else
    ipn(vss) = ipn(vss)+1
    Application("ipn")=ipn
end if
Application.UnLock
Session("vip")=vip
End Sub

Sub Session_OnEnd
dim vss,vs,ipn,n
Application.Lock
vs=Application("vs")
n=Application("vss")
ipn=Application("ipn")
vip = Session("vip") 
if n > 0 then
    vss = 0
    do while vs(vss)<> vip and vss <= n
        vss = vss - 1
    loop
end if 
if vss <= n then
    if ipn(vss) > 1 then 
        ipn(vss) = ipn(vss)-1
        Application("ipn")=ipn
    else
'        if vss<n then
            vs(vss) = vs(n)
            ipn(vss) = ipn(n)
'        end if
        n=n-1
        redim Preserve vs(n)
        redim Preserve ipn(n)
        Application("ipn")=ipn
        Application("vs")=vs
        Application("vss")=n
    end if
end if
Application.UnLock
End Sub
</script>

visitorlist.asp:
程序代码:
<% Response.Buffer = True 

 Response.ExpiresAbsolute = Now() - 1 

 Response.Expires = 0 

 Response.CacheControl = "no-cache"  %><html>
<head>

 <meta http-equiv="refresh" content="20">

 <meta http-equiv="expires" content="0" /> 

 <meta http-equiv="cache-control" content="no-cache,must-revalidate" /> 

 <meta http-equiv="pragma" content="no-cache" />
<title>Visitor List</title>
</head>
<body>
<P>
<% response.write(now()) %> 
<table align=center border=2 cellspacing=1> 
<tbody>
<%
dim vss,vs,vs1,ipn,n
vss = Application("vss")
vs = Application("vs")
ipn = Application("ipn")
' Application.Lock
n = vss
do while vss > 0
    response.write("<tr><td>"&vs(vss)&"</td><td>"&ipn(vss)&"</td></tr>"&chr(13))
    vss = vss - 1
loop
%>
</tbody></table>
<%

vss = Application("vss")
vs = Application("vs")
ipn = Application("ipn")
' Application.Lock
n = vss
response.write("<A>"&vss&"</A")
'do while vss > 0
'    response.write("<tr><td>"&vs(vss)&"</td><td>"&ipn(vss)&"</td></tr>"&chr(13))
'    vss = vss - 1
'loop

%>

</body></html>


[ 本帖最后由 MrWolf 于 2014-4-24 09:59 编辑 ]
搜索更多相关主题的帖子: 计算机 来访者 color 记录 信息 
2014-04-23 22:57
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
需要顶一下吗?
2014-04-24 09:58
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
求助!斑竹!
2014-04-24 16:16
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
求助!斑竹!
2014-04-24 16:16
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
斑竹,求助!
2014-04-25 07:58
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
斑竹,求助!
2014-04-25 07:58
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
回复 7 楼 tlliqi
需要顶,更需要解决啊
2014-04-25 17:40
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
晕啊,为什么没有人能给予解答呢
2014-04-26 00:36
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
,,
2014-04-28 17:27
MrWolf
Rank: 2
等 级:论坛游民
帖 子:13
专家分:23
注 册:2014-4-23
收藏
得分:0 
以下是引用hu9jj在2014-4-29 07:45:24的发言:

不清楚的楼主为什么要从下面的方式取得用户IP:
vip = request.servervariables("http_x_forwarded_for")
if vip = "" then vip = Request.ServerVariables("Remote_Addr")
更不清楚同在一个页面中还要通过Session来取得IP值。
vip = Session("vip")

版主终于露面了,非常感谢!
实在不好意思,没有写注释。

我大概解释一下。
我以上取得用户IP的方法是baidu的结果,是为了避免取得的是代理服务器的地址,其他方法我就不清楚了。
http://zhidao.baidu.com/question/18441897.html?qbl=relate_question_0&word=asp%20%C8%A1%B5%C3%D3%C3%BB%A7IP
http://zhidao.baidu.com/question/8737637.html?qbl=relate_question_0&word=asp%20%C8%A1%B5%C3%D3%C3%BB%A7IP

我这个来访者记录,没有记录到数据库中去。

在会话Session建立时,记录该会话的IP(一个IP多个会话,则进行计数),而在会话结束时,则该会话计数减1,减到0,则清除该IP
global.asa:
程序代码:
<script language="vbscript" runat="server">

' Application启动时, 初始化IP数组。
Sub Application_OnStart
dim vs(1)
dim ipn(1)

 Application("vss")=0

 Application("vs")=vs

 Application("ipn")= ipn
End Sub

' Session启动,
Sub Session_OnStart
dim vss,vs,vs1,ipn,n

 Application.Lock

 vs=Application("vs")

 vss=Application("vss")

 ipn=Application("ipn")

 n = vss

 vip = request.servervariables("http_x_forwarded_for")   '这两行取得用户IP
if vip = "" then vip = Request.ServerVariables("Remote_Addr") 
'如果 已经有用户,看是否是重复IP
if vss > 0 then 
     do while vs(vss)<> vip and vss > 0
         vss = vss - 1
     loop
end if 
' 不是重复IP, 则增加此IP,并且计数值为1
if vss = 0 then
     n=n+1
     redim Preserve vs(n)
     redim Preserve ipn(n)
     vs(n) = vip
     ipn(n) = 1
     Application("vs")=vs
     Application("ipn")=ipn
     Application("vss")=n
else   ' 是重复IP,则计数值加1.
     ipn(vss) = ipn(vss)+1
     Application("ipn")=ipn
end if

 Application.UnLock

 Session("vip")=vip
End Sub

'会话结束
Sub Session_OnEnd
dim vss,vs,ipn,n

 Application.Lock

 vs=Application("vs")

 n=Application("vss")

 ipn=Application("ipn")

 vip = Session("vip") 
if n > 0 then
     vss = 0             ' 查找该会话的IP在数组中的序号
     do while vs(vss)<> vip and vss <= n
         vss = vss - 1
     loop
end if 
if vss <= n then       ' 如果找到, 
     if ipn(vss) > 1 then       ' 且计数值大于1,则计数值减1
         ipn(vss) = ipn(vss)-1
         Application("ipn")=ipn
     else              '    将当前数组中序号的项清除(把最后一项挪到这里来)
            vs(vss) = vs(n)
            ipn(vss) = ipn(n)
         n=n-1
         redim Preserve vs(n)
         redim Preserve ipn(n)
         Application("ipn")=ipn
         Application("vs")=vs
         Application("vss")=n
     end if
end if

 Application.UnLock
End Sub

 </script>


[ 本帖最后由 MrWolf 于 2014-5-5 20:56 编辑 ]
2014-05-05 19:48
快速回复:来访者记录并显示,显示结果有问题 - [asp]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027255 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved