用asp实现分层权限控制
本文实现了帐户管理系统中的分级访问控制。该程序是用ASP和# 106avascript,运行在Win NT服务器配备IIS4.0,这是快速和易于维护。
权限划分如下:
(1)总裁兼首席财务官:不能进入,不能限制查询、统计;
二副总裁:不能录入,可以查询,统计其部门的会计部门;
三.部门领导:不能进入,可以查询并清点本部门的账目;
(4)会计:可以进入各个部门的账户(有时会计做几个部门账户),只能查询和统计自己的输入账户。
所涉及的数据库和字段如下所示
(1)、jk_user数据库字段:ID(序列号),BMID(部门编号),用户名(用户名),密码(密码)、权利(权力的价值);
(2)、骨髓数据库和字段:ID(序列号),BMID(部门编号);
三.jzpz数据库字段:ID(编号),BM(部),ZGS(子公司),西门子(项目组)、XM(项目)、Sr(收入)、ZC(支出),szfx(收入和支出方向),szxs(收入和支出的形式)。
RQ(日期),JBR(算子),LRR(入口),szsm(账户);
(4)、ZGS数据库和字段:ID(序列号),ZGS(子公司)名称(公司名称),BMID(部门编号)。
1。首先验证用户的身份
用户名和密码由用户提交的是数据库中的字段jk_user确定其合法性比较。只有合法用户才能进入,合法用户可以访问。
四权利的水平,分别给予1, 2, 3、4四权值,分别。(程旭略)。
2。凭证帐户(分类权限控制)
凭证记账功能专为会计人员,其他人不能使用,如作为非会计人员进入凭证输入界面,只能查询帐户收据功能按钮查看,其他功能。
按钮不可见,输入的凭据以临时形式存储。它被称为不成文的帐户图书馆。只有在运行凭证记帐功能之后,它才能在帐簿库中输入凭证库的凭证吗。
修正它。有些程序如下:
非会计师进入,不显示凭证帐户和保存凭证功能按钮。
如果(该网页。刚进入)然后
如果会话(实际上)< > 1
button1.hide
button2.hide
最后如果
…
自动填充时间和运算符
textbox7。价值=年(日期)月(日)日(日)
textbox9.value =会话(用户名)
集Cnn1 = server.createobject(数据连接)
集RST1 = server.createobject(ADODB。记录集)
cnn1. cursorlocation = 3
cnn1.connectiontimeout = 30
cnn1.打开DSN = JKY
RST1。打开选择*从BM
如果rst1.recordcount > 0
rst1.movefirst
ID = rst1.fields(ID)
而不是rst1.eof
listbox3.additem RST1。领域(bmname ),Cint(rst1.fields(ID))
响应。写RST1。领域(bmname )RST1。领域(ID)
rst1.movenext
环
最后如果
RST1。关闭
RST1。打开选择从哪里zgsname ZGS BMID = 的身份,cnn1,1,1,adCmdText
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox4.additem CSTR(rst1.fields(zgsname ))
rst1.movenext
环
最后如果
RST1。关闭
cnn1.close
电话writerst
最后如果
端功能
…
凭据帐户
子button2_onclick
暗淡的
S = listbox1.selectedindex
写入响应
端子
子listbox3_onchange
我的身份证
我= listbox4.getcount()
在我1岁时做
电话listbox4.removeitem(我)
我= 1.
环
ID = listbox3.getvalue(listbox3。SelectedIndex)
集CNN2 = server.createobject(数据连接)
集rst2 = server.createobject(ADODB。记录集)
CNN2 cursorlocation = 3。
cnn2.connectiontimeout = 30
CNN2。打开DSN = JKY
rst2。打开选择从哪里zgsname ZGS BMID = 的身份,cnn2,1,1,adCmdText
如果rst2.recordcount > 0
rst2.movefirst
而不是rst2.eof
listbox4.additem CSTR(rst2.fields(zgsname ))
rst2.movenext
环
最后如果
rst2。关闭
CNN2。关闭
端子
子button2_onclick
集cnn5 = server.createobject(数据连接)
cnn5 cursorlocation = 3。
cnn5.connectiontimeout = 30
cnn5。打开DSN = JKY
cnn5。执行插入jzpz(BM,ZGS,西门子,XM,Sr,ZC,szfx,szxs)。
LRR,从wjzpz,LRR =会话szsm(用户名)
删除wjzpz,LRR = 会议(用户名)cnn5。执行
端子
三.数据查询(分层权限控制)
在文档查询栏中,在选定的条件下为我的一个盒子为你的部门,所需的条件(自动添加),由该部门的内容自动根据用户的权限进行程序。
数据库中调用相应的值,分支的内容将根据下属部门自动调整。一些程序如下:
......
根据权限值输入相应的查询接口
......
thispage_onenter()函数
集Cnn1 = server.createobject(数据连接)
集RST1 = server.createobject(ADODB。记录集)
cnn1. cursorlocation = 3
cnn1.connectiontimeout = 30
cnn1.打开DSN = JKY
选择案例的会议(实际上)
案例3副总裁
RST1。打开选择bm.bmname从jk_user,BM,jk_user。BMID = bm.id和jk_user.username = 会议(用户名)
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox1.additem CSTR(rst1.fields(bmname ))
rst1.movenext
环
最后如果
RST1。关闭
RST1。打开选择zgsname从ZGS
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox2.additem CSTR(rst1.fields(zgsname ))
rst1.movenext
环
最后如果
RST1。关闭
cnn1.close
checkbox1.setchecked(真的)
案例2部门经理
listbox1.additem会话(BM)
RST1。打开选择从哪里zgsname ZGS BMID = 会议(BMID ),cnn1,1,1,adCmdText
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox2.additem CSTR(rst1.fields(zgsname ))
rst1.movenext
环
最后如果
RST1。关闭
cnn1.close
checkbox1.setchecked(真的)
checkbox1.0
案例1会计
RST1。打开选择BM bmname
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox1.additem CSTR(rst1.fields(bmname ))
rst1.movenext
环
最后如果
RST1。关闭
RST1。打开选择zgsname从ZGS
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox2.additem CSTR(rst1.fields(zgsname ))
rst1.movenext
环
最后如果
RST1。关闭
cnn1.close
案例4迪安
RST1。打开选择BM bmname
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox1.additem CSTR(rst1.fields(bmname ))
rst1.movenext
环
最后如果
RST1。关闭
RST1。打开选择zgsname从ZGS
如果rst1.recordcount > 0
rst1.movefirst
而不是rst1.eof
listbox2.additem CSTR(rst1.fields(zgsname ))
rst1.movenext
环
最后如果
RST1。关闭
cnn1.close
最后选择
最后如果
…
端功能
按权限查询凭证
子button1_onclick
昏暗的rst2,CNN2,STR,我
昏暗的BM(1)、(1)、ZGS系列(1)、(1)、szfx XM(1)、(1)、szxs RQ(2),<<(1))。
BM(0)= checkbox1.getchecked()
如果BM(0)那么
BM(1)= listbox1.gettext(数目。SelectedIndex)
和BM(1)
最后如果
ZGS(0)= checkbox2.getchecked()
如果ZGS(0)然后
ZGS(1)= listbox2.gettext(listbox2。SelectedIndex)
STR = str和ZGS =零(1)
最后如果
西门子(0)= checkbox3.getchecked()
如果西门子(0)然后
西门子(1)=(txtxmz装饰价值。)
STR = str和西门子%西门子(1)%
最后如果
XM(0)= checkbox4.getchecked()
如果XM(0)然后
XM(1)=(tztxm装饰价值。)
STR = str和XM %XM(1)%
最后如果
Szfx(0)= checkbox5.getchecked()
如果szfx(0)然后
Szfx(1)= listbox3.gettext(listbox3。SelectedIndex)
STR = str和szfx =szfx(1)
最后如果
Szxs(0)= checkbox6.getchecked()
如果szxs(0)然后
Szxs(1)= listbox4.gettext(listbox4。SelectedIndex)
STR = str和szxs =szxs(1)
最后如果
JBR(0)= checkbox8.getchecked()
如果JBR(0)然后
JBR(1)=(txtjbr装饰价值。)
STR = str和JBR %JBR(1)%
最后如果
集CNN2 = server.createobject(数据连接)
集rst2 = server.createobject(ADODB。记录集)
CNN2 cursorlocation = 3。
cnn2.connectiontimeout = 30
CNN2。打开DSN = JKY
响应。写
响应。写
响应。写
答复:写账单凭单清单
响应。写
响应。写
响应。写
答复:写部门
响应。写
答复:写附属
响应。写
响应。写项目组
响应。写
答复:写项目名称/合同号
响应。写
答复:写收入额(一万元)
响应。写
答复:写支出额(一万元)
如果会话(实际上)=1
响应。写aaaaaaaa
rst2。打开选择*从jzpz其中ID > 0和LRR =会话(用户名)STR,cnn2,1,1,
其他的
响应。写fffffffffffff
rst2。打开选择*从jzpz其中ID > 0STR,cnn2,1,1,adCmdText
最后如果
如果rst2.recordcount > 0
rst2.movefirst
rst2.pagesize = 20
rst2.absolutepage = 1
我= 0
而不是rst2.eof我< rst2.pagesize
响应。写
响应。写rst2。领域(BM)
响应。写rst2。领域(ZGS )
响应。写rst2。领域(西门子)
响应。写< a href = fmjz1。Aspid =rst2。领域(ID)
目标= _blank >rst2.fields(XM)
响应。写rst2。领域(高级)
响应。写rst2。领域(ZC )
响应。写
i = i + 1
rst2.movenext
环
最后如果
响应。写
响应。写
J = rst2.pagecount
答:写总页数:
对于i = 1到j
响应。写我
如果j模10=0然后
响应。写
最后如果
下一个
响应。写
rst2。关闭
CNN2。关闭
............
端子
以上程序可根据用户要求和用户要求定制。该系统是运行在Win NT,IIS4.0和win98,PWS。