ASP教程之用ASP完成分级权限把持
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了!把持本文完成的是一个帐务办理体系平分级权限的把持,程序利用ASP和JavaScript编写,在装有IIS4.0的winNT服务器上运转,速率快,易保护。权限级别分别以下:
①、院长和财政科长:不克不及输出,能够无穷制查询、统计;
②、副院长:不克不及输出,能够查询、统计其分担部门的帐务;
③、部门向导:不克不及输出,能够查询、统计本部门的帐务;
④、管帐:能输出各部门的帐务(一个管帐偶然要做几个部门的帐),只能查询、统计本人输出的帐务。
触及的数据库和字段以下
①、JK_USER数据库及字段:id(序列号),bmid(部门号),username(用户名),pwd(口令),right(权限值);
②、BM数据库及字段:id(序列号),bmid(部门号);
③、JZPZ数据库及字段:id(序列号),bm(部门),zgs(子公司),xmz(项目组),xm(项目),sr(支出),zc(付出),szfx(出入偏向),szxs(出入情势),rq(日期),jbr(包办人),lrr(录进人),szsm(出入申明);
④、ZGS数据库及字段:id(序列号),zgs(子公司)name(公司名),bmid(部门编号)。
1.起首举行用户身份正当性考证
将用户提交的用户名和口令与数据库JK_USER中的字段对比对比,以断定其正当性,只要正当的用户(体系办理员为其开过户)才能够进进,正当用户有四种权限级别,分离付与“1”、“2”、“3”、“4”四种权限值。(程序略)。
2.凭据记帐(分级权限把持)
凭据记帐功效是专为管帐职员服务的,其别人不成以利用,如以非管帐职员身份进进凭据录进界面时,只要“查询记帐凭据”功效按钮可见,别的功效按钮不成见。录进的凭据先寄存在一个一时内外,称为“未记帐凭据库”,只要运转“凭据记帐”功效后才进进“凭据库”在“未记帐凭据库”中的凭据能够修正。部分程序以下:
’非管帐职员进进,不显现“凭据记帐”和“保留未记帐凭据”功效按钮
if(thisPage.firstEntered)then
ifsession("tright")"1"then
button1.hide
button2.hide
endif
…………
’主动填写工夫和操纵人
Textbox7.value=year(date)&"-"&month(date)&"-"&day(date)
Textbox9.value=session("username")
setcnn1=server.CreateObject("adodb.connection")
setrst1=server.CreateObject("adodb.recordset")
cnn1.CursorLocation=3
cnn1.ConnectionTimeout=30
cnn1.Open"DSN=jky"
rst1.Open"select*frombm",cnn1,1,1,adcmdtext
ifrst1.RecordCount>0then
RST1.MoveFirst
Id=rst1.Fields("id")
dowhilenotrst1.EOF
Listbox3.addItemrst1.Fields("bmName"),cint(rst1.Fields("id"))
Response.Writerst1.Fields("bmname")&rst1.Fields("id")
rst1.MoveNext
loop
endif
rst1.Close
rst1.Open"selectzgsnamefromzgswherebmid="&id,cnn1,1,1,adcmdtext
ifrst1.RecordCount>0then
rst1.MoveFirst
dowhilenotrst1.EOF
Listbox4.addItemcstr(rst1.Fields("zgsname"))
rst1.MoveNext
loop
endif
rst1.Close
cnn1.close
callwriterst
endif
endfunction
………………
’凭据记帐
subbutton2_onclick
dims
s=Listbox1.selectedIndex
Response.Writes
endsub
sublistbox3_onchange
dimid,i
i=Listbox4.getCount()
dowhilei>-1
callListbox4.removeItem(i)
i=i-1
loop
id=listbox3.getValue(listbox3.selectedIndex)
setcnn2=server.CreateObject("adodb.connection")
setrst2=server.CreateObject("adodb.recordset")
cnn2.CursorLocation=3
cnn2.ConnectionTimeout=30
cnn2.Open"DSN=jky"
rst2.Open"selectzgsNamefromzgswherebmid="&id,cnn2,1,1,adcmdtext
ifrst2.RecordCount>0then
RST2.MoveFirst
dowhilenotrst2.EOF
Listbox4.addItemcstr(rst2.Fields("zgsName"))
rst2.MoveNext
loop
endif
rst2.Close
cnn2.Close
endsub
subbutton2_onclick
setcnn5=server.CreateObject("adodb.connection")
cnn5.CursorLocation=3
cnn5.ConnectionTimeout=30
cnn5.Open"DSN=jky"
cnn5.Execute"insertintojzpz(bm,zgs,xmz,xm,sr,zc,szfx,szxs,rq,jbr,lrr,szsm)selectbm,zgs,xmz,xm,sr,zc,szfx,szxs,rq,jbr,lrr,szsmfromwjzpzwherelrr="&session("username")&""
cnn5.Execute"deletefromwjzpzwherelrr="&session("username")&""
endsub
3.数据查询(分级权限把持)
以凭据的字段为前提举行查询,在供选前提前有一方框供打“√”,个中“部门“前提必选(程序主动加上),部门内容由程序依据用户的权限主动从数据库中挪用响应值,分公司内容依据所属部门主动调剂,部分程序以下:
……………
’依据权限值进进响应的查询界面
……………
functionthisPage_onenter()
setcnn1=server.CreateObject("adodb.connection")
setrst1=server.CreateObject("adodb.recordset")
cnn1.CursorLocation=3
cnn1.ConnectionTimeout=30
cnn1.Open"dsn=jky"
selectcasesession("Tright")
case"3"副院长
rst1.Open"selectbm.bmNamefromjk_user,bmwhereJK_user.bmid=bm.idandjk_user.username="&session("username")&"",cnn1,1,1,adcmdtext
ifrst1.RecordCount>0then
RST1.MoveFirst
dowhilenotrst1.EOF
Listbox1.addItemcstr(rst1.Fields("bmName"))
rst1.MoveNext
loop
endif
rst1.Close
rst1.Open"selectzgsnamefromzgs",cnn1,</p>实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
页:
[1]