加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

asp事件类 asplib-eventProvider.class.asp 用于取得ip等

发布时间:2023-10-16 12:40:45 所属栏目:Asp教程 来源:
导读:作者真是细致,把这些东西都封装成为class了。有点过了,这些东西可以作成过程或者函数来封装,sub和function也是封装,不一定非要class才可以。您的文件库不一定全部都是class,一些sub和funtion都是必要的。实现的

作者真是细致,把这些东西都封装成为class了。有点过了,这些东西可以作成过程或者函数来封装,sub和function也是封装,不一定非要class才可以。您的文件库不一定全部都是class,一些sub和funtion都是必要的。

实现的功能包括

1,showInfo(e_title,c_url,e_num,e_des,e_time,opera,ip,reurl):显示错误信息

2,getIP():取得客户IP

3,checkPost():验证是否是站外提交

4,getReferer():来路记录

5,getCurURL():取得当前页面路径

6,isRefresh(s1,s2,maxtimes):防刷新

完整代码:

<%

'******************************

'名称:eventProvider(事件类)

'日期:2006/11/24

'作者:西楼冷月

'网址:www.CuoXIn.com

'描述:无

'版权:转载请注名出处,作者

'******************************

'最后修改:2006/11/24

'修改次数:0

'修改说明:无

'目前版本:v1.0.0

'******************************

Class eventProvider

Private logDBName'日志表名

'www.CuoXIn.com 设计家园

'初始化

Private Sub Class_Initialize()

logDBName="LogInfo"

End Sub

'

Private Sub Class_Terminate()

End Sub

'预定义事件的标题,也可以说是类型

Public Function eventTitles(typenum)

Dim arrType(9)

arrType(0)="未知事件"

arrType(1)="非法的用户登陆"

arrType(2)="URL传递非法参数"

arrType(3)="登陆传入非法字符"

arrType(4)="登陆频繁,超过规定时间内登陆次数"

arrType(5)="查询传入非法字符"

arrType(6)="查询频繁,超过规定时间内查询次数"

arrType(7)="页面刷新频繁,超过规定时间内刷新次数"

arrType(8)="站外提交数据"

arrType(9)="后台登陆"

If Not IsNumeric(typenum) Then eventTitles="未知事件":Exit Function

If CLng(Abs(typenum))>UBound(arrType) Then

eventTitles="未知事件":Exit Function

End If

eventTitles=arrType(typenum)

End Function

'预定数组显示错误

Public Sub showArrayInfo(infoitems,infovalues)

Dim str

str="<div style='border:2px solid #4E4E9C;font-family:arial ;color:#800040;width:50%;font-size:9pt'>"

str=str&"<ul style='margin:20px;'><b>Asp Event Infomation:</b>"&vbcrlf

If IsArray(infoitems) And IsArray(infovalues) Then

For I=LBound(infoitems) To UBound(infoitems)

str=str&"<li><b style='color:#4E4E9C'>"&infoitems(I)&":</b>"&infovalues(I)&vbcrlf

Next

Else

str=str&"<li><b>"&infoitems&"</b>:"&infovalues&vbcrlf

End If

str=str&"</ul></div>"&vbcrlf

Response.Write str

End Sub

'显示错误

Public Sub showInfo(e_title,c_url,e_num,e_des,e_time,opera,ip,reurl)

Dim infoitems,infovalues

infoitems=Array("Event Title","Event Url","EventNumber","EventDescription",_

"EventTime","Operator","IP","Referer Url"_

)

infovalues=Array(e_title,c_url,e_num,e_des,e_time,opera,ip,reurl)

showArrayInfo infoitems,infovalues

End Sub

'显示原文件的有关信息

Public Sub showOriInfo(oriclass,orifunction,oripage)

Dim infoitems,infovalues

infoitems=Array("Original class","Original function","Original page")

infovalues=Array(oriclass,orifunction,oripage)

showArrayInfo infoitems,infovalues

End Sub

'获取ip

Public Function getIP()

Dim IP

'如果客户端用了代理服务器,则应该用ServerVariables("HTTP_X_FORWARDED_FOR")方法

IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

If IP = "" or isnull(IP) or isempty(IP) Then

'如果客户端没用代理,应该用Request.ServerVariables("REMOTE_ADDR")方法

IP = Request.ServerVariables("REMOTE_ADDR")

end if

getIP = IP

End Function

'站外提交验证

Public Function checkPost()

Dim server_v1,server_v2

checkPost=False

server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))

server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))

If Mid(server_v1,8,len(server_v2))=server_v2 Then checkPost=True

End Function

'获取来路

Public Function getReferer()

getReferer=Request.ServerVariables("HTTP_REFERER")

End Function

'得到浏览器目前的URL

Public Function getCurURL()

If Request.ServerVariables("HTTPS") = "on" Then

GetCurrentURL = "https://"

Else

GetCurrentURL = "http://"

End If

GetCurURL = GetCurURL & Request.ServerVariables("SERVER_NAME")

If (Request.ServerVariables("SERVER_PORT") <> 80) Then GetCurURL = GetCurURL & ":" & Request.ServerVariables("SERVER_PORT")

GetCurURL = GetCurURL & Request.ServerVariables("URL")

If (Request.QueryString <> "") Then GetCurURL = GetCurURL & "?" & Request.QueryString

End Function

'获取来路或得到浏览器目前的URL,综合前面两个

Public Function getUrl(t)

If t=1 Then

getUrl=getCurURL()

Else

getUrl=getReferer()

End If

End Function

'防刷新

's1:超过s1秒后才允许访问

's2:如果现在时间和上次访问时间相差s2秒则视为刷新频繁

'maxtimes:如果频繁刷新次数等于或大于maxtimes次则记录

'如果是刷新频繁则isRefresh=true,否则为false

Public Function isRefresh(s1,s2,maxtimes)

Dim CacheName

CacheName="eventProvider_2006"

If IsDate(Session(CacheName&"IsRefreshTime")) Then'超过s1秒后才允许访问

If DateDiff("s",Session(CacheName&"IsRefreshTime"),Now())>s1 Then

Session(CacheName&"IsRefreshTime")=Now()

Session(CacheName&"IsRefresh")=False

End If

End If

If Session(CacheName&"IsRefresh")=True Then

isRefresh=True

Else

isRefresh=False

End If

If IsDate(Session(CacheName&"RefreshStart")) Then

If DateDiff("s",Session(CacheName&"RefreshStart"),Now())<s2 Then'//如果现在时间和上次访问时间相差s2秒则视为刷新频繁

Session(CacheName&"RefreshT")=Session(CacheName&"RefreshT")+1'//统计频繁刷新次数

If Session(CacheName&"RefreshT")>=maxtimes Then'//如果频繁刷新次数等于或大于maxtimes次则记录

Session(CacheName&"IsRefresh")=True

Session(CacheName&"IsRefreshTime")=Now()

End If

Else

Session(CacheName&"RefreshT")=0'//如果不是,则把记录频繁刷新次数变为0

End If

End If

Session(CacheName&"RefreshStart")=Now()'//保留这一次访问的时间到下次访问时用

End Function

'写入数据库日志

Public Sub writeToDB(e_title,c_url,e_num,e_des,e_time,opera,ip,reurl,conn)

Dim sql

sql="Insert INTO "&logDBName&"(eTitle,eUrl,eNum,eDes,eTime,Operator,IP,RefererUrl) VALUES("

sql=sql&"'"&e_title&"','"&c_url&"','"&e_num&"','"&e_des&"','"&e_time&"','"&opera&"','"&ip&"','"&reurl&"')"

conn.Execute(sql)

End Sub

End Class

%>

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章