| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1136 人关注过本帖
标题:来访者记录并显示,显示结果有问题 - [asp]
只看楼主 加入收藏
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
楼主的代码没有任何注释,我一下子也看不清是如何取用户IP的。我通常是用Request.ServerVariables("remote_addr")来取用户IP的,需要显示时就直接将这个代码插入到页面中,需要保存时则先将IP保存在变量中,然后与其他变量一同保存在数据库中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-04-29 07:25
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
不清楚的楼主为什么要从下面的方式取得用户IP:
vip = request.servervariables("http_x_forwarded_for")
if vip = "" then vip = Request.ServerVariables("Remote_Addr")
更不清楚同在一个页面中还要通过Session来取得IP值。
vip = Session("vip")

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-04-29 07:45
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
chiron0921
Rank: 2
等 级:论坛游民
帖 子:6
专家分:20
注 册:2014-4-10
收藏
得分:0 
斑竹,求助!
2014-05-06 17:37
快速回复:来访者记录并显示,显示结果有问题 - [asp]
数据加载中...
 
   



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

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