基于ASP语言收发文管理系统的设计与实现
2007-12-11 20:47:04 来源:WEB开发网其中,gw_mrlc(wdlx,lcmc,ry,xh,clm,clr)记录了系统中用到的各默认流程的信息。Wdlx指文档类型,收文或者发文;lcmc指流程名称;ry指定义该默认流程的人员;xh对应默认流程中各步骤的顺序号,它有大小之分,小的则表示步骤在前,系统将先执行;clm对应默认流程中各步骤的名称;clr对应默认流程中各步骤的处理人员。
Gw_mrlc仅是记录了各流程的信息,还需要gw_cllc(lxh,lcmc,xh,clr,jbrq,clrq,clyj,zt,wjm)来跟踪文件在流程中的执行状况。对于任意收发文文件在系统中都会有各自唯一的流程与之一一对应,lxh则记录了该流程的序列号;lcmc,xh,clr同上所定义;jbrq,clrq,clyj,zt,wjm都是针对该流程中顺序号为xh的各个处理步骤而言,jbrq指上一个步骤处理完毕提交过来时的日期;clrq指当前步骤处理完毕时的日期;clyj指当前步骤的处理意见;zt指当前步骤的处理状态,已经处理还是尚未处理,以方便文件的实时跟踪;wjm则记录了文件的正文内容和在流转过程中文件的修改痕迹,具体的可以通过文件上传功能来实现。
2、使用Session进行登录验证
ASP代码使用表单实现交互,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如在浏览器中敲入“...xx.asp?flag=1”,即可不经过表单页面直接进入满足“flag=1”条件的页面。
为防止未经注册的用户绕过注册界面直接进入应用系统,我们采用Session对象进行注册验证。例如,我们制作了下面的注册页面。
<%’读取用户登录的信息
Luser=ltrim(Request("User"))
Lpass=Request("Pass")
’检验帐号和密码是否正确
if Luser=rs(“userid”) and Lpass= rs(“password”) then
Session("sysuser")=Luser ’使用Session对象进行用户登录验证
…
else
response.write “您的输入不正确!”
response.end
end if
%>
在应用系统的其他WEB页,首先要进行Session对象的验证。如果你未通过用户登录界面,那么Session("sysuser")就为空值,你将无法使用系统提供的任何功能,除非你是合法用户才可,这样就在一定程度上保证了系统的安全性。其验证代码如下:
<%
if session("sysuser ")="" then
response.write("对不起,你还没有<a href='../login.asp' target='_top'>登录</a>。")
else
…
end if
%>
3、对ASP页面进行加密
为有效的防止ASP源代码泄露,可以对ASP页面进行加密。我们曾采用两种方法对ASP页面进行加密。一是使用组件技术将编程逻辑封装入DLL之中;二是使用微软的ScriptEncoder对ASP页面进行加密。使用组件技术存在的主要问题是每段代码均需组件化,操作比较繁琐,工作量较大,而使用Encoder对ASP页进行加密,操作简单,收效良好。
ScriptEncoder的运行程序是SCRENC.EXE,使用方法是:
SCRENC [/s][/f][/xl][/ldefLanguage][/edefExtention]inputfile outputfile
其中:/s是屏蔽屏幕输出;/f指定输出文件是否覆盖同名输入文件;/xl指是否在.asp文件的顶部添加@Language指令;/ldefLanguage指定缺省的脚本语言;/edefExtention指定待加密文件的扩展名。
4、存储过程的使用
使用存储过程不仅可以提高查询速度,而且可以保证事务的完整性。在该系统中,每个文件对应唯一的流水号,当有新的文件要入库时流水号就会自动加一。由于所有的用户都在网上,那么两个文件同时入库的情况就有可能发生,为了保证流水号的唯一性,就要求“取流水号”和“流水号加一”作为一个事务来完成。ASP调用存储过程比调用SQL语句要复杂一些,必须用ADO组件中的命令对象,步骤如下:
创建一个ADO命令对象,把Commandtext属性为存储过程名,Commandtype属性为4,表示该命令是调用存储过程为命令对象创建参数。
更多精彩
赞助商链接