asp的LOG事件日志记录类

asp的log事件日志记录类

asp事件类,适合用来记录操作记录。功能说明:
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
'作者:西楼冷月
'描述:无
'版权:转载请注名出处,作者
'******************************
'最后修改:2006/11/24
'修改次数:0
'修改说明:无
'目前版本:v1.0.0
'******************************
class eventprovider

private logdbname'日志表名

'初始化
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
%>

Copyright © 2014 ASP技巧教程源码大全 All Rights Reserved
晋ICP备14006235号-3 页面执行时间:93.750毫秒 返回顶部