楼主的代码没有任何注释,我一下子也看不清是如何取用户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>