楼主的代码没有任何注释,我一下子也看不清是如何取用户IP的。我通常是用Request.ServerVariables("remote_addr")来取用户IP的,需要显示时就直接将这个代码插入到页面中,需要保存时则先将IP保存在变量中,然后与其他变量一同保存在数据库中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
程序代码:
<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>