网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP > 正文
asp事件类 asplib-eventProvider.class.asp 用于获取ip等
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/25
下载{$ArticleTitle}原创论文样式

  作者真是细致,把这些东西都封装成为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):防刷新

  完整代码:

<%
&apos;******************************
&apos;名称:eventProvider(事件类)
&apos;日期:2006/11/24
&apos;作者:西楼冷月
&apos;网址:www.xilou.net | www.chinaCMS.org
&apos;描述:无
&apos;版权:转载请注名出处,作者
&apos;******************************
&apos;最后修改:2006/11/24
&apos;修改次数:0
&apos;修改说明:无
&apos;目前版本:v1.0.0
&apos;******************************
Class eventProvider

Private logDBName&apos;日志表名
&apos;www.ASPxuexi.com asp学习
&apos;初始化
Private Sub Class_Initialize()
logDBName="LogInfo"
End Sub
&apos;
Private Sub Class_Terminate()

End Sub
&apos;预定义事件的标题,也可以说是类型
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
&apos;预定数组显示错误
Public Sub showArrayInfo(infoitems,infovalues)
Dim str
str="<div style=&apos;border:2px solid #4E4E9C;font-family:arial ;color:#800040;width:50%;font-size:9pt&apos;>"
str=str&"<ul style=&apos;margin:20px;&apos;><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=&apos;color:#4E4E9C&apos;>"&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
&apos;显示错误
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
&apos;显示原文件的有关信息
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
&apos;获取ip
Public Function getIP()
Dim IP
&apos;如果客户端用了代理服务器,则应该用ServerVariables("HTTP_X_FORWARDED_FOR")方法
IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If IP = "" or isnull(IP) or isempty(IP) Then
&apos;如果客户端没用代理,应该用Request.ServerVariables("REMOTE_ADDR")方法
IP = Request.ServerVariables("REMOTE_ADDR")
end if
getIP = IP
End Function
&apos;站外提交验证
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
&apos;获取来路
Public Function getReferer()
getReferer=Request.ServerVariables("HTTP_REFERER")
End Function
&apos;得到浏览器目前的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
&apos;获取来路或得到浏览器目前的URL,综合前面两个
Public Function getUrl(t)
If t=1 Then
getUrl=getCurURL()
Else
getUrl=getReferer()
End If
End Function
&apos;防刷新
&apos;s1:超过s1秒后才允许访问
&apos;s2:如果现在时间和上次访问时间相差s2秒则视为刷新频繁
&apos;maxtimes:如果频繁刷新次数等于或大于maxtimes次则记录
&apos;如果是刷新频繁则isRefresh=true,否则为false
Public Function isRefresh(s1,s2,maxtimes)
Dim CacheName
CacheName="eventProvider_2006"

If IsDate(Session(CacheName&"IsRefreshTime")) Then&apos;超过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&apos;//如果现在时间和上次访问时间相差s2秒则视为刷新频繁
Session(CacheName&"RefreshT")=Session(CacheName&"RefreshT")+1&apos;//统计频繁刷新次数
If Session(CacheName&"RefreshT")>=maxtimes Then&apos;//如果频繁刷新次数等于或大于maxtimes次则记录
Session(CacheName&"IsRefresh")=True
Session(CacheName&"IsRefreshTime")=Now()
End If
Else
Session(CacheName&"RefreshT")=0&apos;//如果不是,则把记录频繁刷新次数变为0
End If
End If

Session(CacheName&"RefreshStart")=Now()&apos;//保留这一次访问的时间到下次访问时用
End Function
&apos;写入数据库日志
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&"&apos;"&e_title&"&apos;,&apos;"&c_url&"&apos;,&apos;"&e_num&"&apos;,&apos;"&e_des&"&apos;,&apos;"&e_time&"&apos;,&apos;"&opera&"&apos;,&apos;"&ip&"&apos;,&apos;"&reurl&"&apos;)"
conn.Execute(sql)
End Sub

End Class
%>

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号