方法一:
对一个上规模的管理系统,由于参与管理的人非常多,操作者的权限分配和操作日志 记录都是十分重要的。
权限分配要根据各个系统的事务逻辑而定,我这里谈一下如果构建一个良好的操作日志记录的方案。
我这里以操作一张财务流水表countlist为例:
1、在countlist中新增加一个字段op_flow,类型为text,可为空;
2、记录日志,每对这张countlist表进行操作,并且操作成功时,调用如下代码:
conn.open constr
set rs_t = conn.execute (" select isnull(op_flow,'') as op_flow from countlist where id="&id)
str = rs_t("op_flow")
rs_t.close
strAct="××操作"
str =now() & ":" &session("user_name")& ":" &strAct& "|" &str '// 格式为 时间:操作人:操作,|为分隔符
sql = " update countlist set op_flow='"&str&"' where id="&id
conn.execute(sql)
conn.close
3、显示日志,在显示日志的页面使用如下代码:
if not isnull(op_flow) then
ii=0
for each str in split(op_flow,"|")
if str<> "" then response.write str&"<br>"
ii=ii+1
if ii=6 then exit for '// 显示最新的六条操作
next
end if
方法二:
<%
name=request.form("name")
pass=md5(md5(request.form("pass")))
if instr(pass,"'")>0 or instr(name,"'")>0 then
conn.Execute "INSERT INTO log(username,action,ip,sj) VALUES('Guest_login','有危险字符"&trim(request.QueryString("name"))&"-"&trim(request.QueryString("pass"))&"','"&Request.ServerVariables("Remote_Addr") &"','"&now()&"' )"
response.redirect "/error/error.asp?T=1"
else
set rs=server.createobject("adodb.recordset")
sql="select * from admin where name='"&name&"' and pass='"&pass&"'"
rs.open sql,conn,3,3
if not rs.eof and not rs.bof then
session("admin")=rs("name")
session("adminid")=rs("id")
rs("lastip")=Request.serverVariables("REMOTE_ADDR")
rs("lastsj")=now
rs("n")=rs("n")+1
rs.update
response.redirect "index.asp"
else
conn.Execute "INSERT INTO log(username,action,ip,sj) VALUES('"&name&"','密码有错为"&request.form("pass")&"','"&Request.ServerVariables("Remote_Addr") &"','"&now()&"' )"
response.redirect "/error/error.asp?T=1"
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
end if
%>
上面是我自己写的,当用户输入密码错误的时候,都会把相关的信息保存到一个log的表中
方法三:
<%
function logwrite(action)
set
recobj_log=server.CreateObject( "ADODB.Recordset ")
recobj_log.ActiveConnection = conobj
recobj_log.Source= "INSERT
INTO syslog (userip,username,useraction,usertime) VALUES( '
"& request.ServerVariables( "remote_addr ") & " ', ' "&
session( "truename ") & " ', ' "& action & " ', '
"& now() & " ') "
recobj_log.Open
方法四:
在数据库中添加一个表log(id,name,date,time,memo)id作为序号,name是操作者的名字,date是日期,time为时间,memo为其具体的操作。
你可以在删除(添加、修改)的动作执行结束的时候,添加些向数据库记录的代码。
比如 删除 在操作者点了删除按钮后,一定会有一段代码去数据库中删除相应的文章,在删除的时候要记录下文章的标题,保存到变量title当中。在删除完成后打开log表,添加一条新的记录,name应该可以在session中可以读到,再获得系统时间和日期,然后
memo="删除文章‘"&title"’"。至于如何显示这个表你应该会作了吧。
recobj_log.Source,recobj_log.ActiveConnection,1,3
recobj_log.Close
set recobj_log=nothing
end function
%>