网站设计制作说明

1、引言早期的动态网页主要采用CGI技术,由于编程困难、效率低下、修改复杂,所以一直是专业程序员的专利。ASP的出现,改变了这个现状, Active Server Pages即ASP是微软开发的一种类似HTML(Hypertext Markup Language超文本标识语言)、Script(脚本)与CGI(Common GAteway Interface 通用网关接口)的结合体。ASP问世以来,每天正在以成千上万的ASP网站在INTERNET中诞生。它以简单易学,却功能强大。被越来越多的人们所喜爱。本次毕业设计我选择的课题是:利用ASP设计学校网站设计-南部县伏虎中学网站,目的是通过该网站的规划和设计,给人们了解我们学校提供了一个平台,拉近了教育和社会之间的距离。让人们足不出户,轻松快捷的获得学校各种信息,展示了学校和教师的风采。同时也通过该平台,学校可以及时了解社会对我们学校的建议和意见,以便我们学校在今后的工作中及时改正。网站的规划和设计,从系统的调研,系统的分析,系统的设计到系统的实现,利用软件工程的思想作为指导,开发了这个完整的系统,提高了自己的专业知识和实际相结合的能力。2、系统设计2.1 开发设计思想本系统开发设计思想:尽量采用学校现有软硬件环境,及先进的网站制作系统开发方案,从而达到充分利用学校现有资源,提高系统开发水平和应用效果的目的。系统采用模块化程序设计方法,这样既便于系统功能的各种组合,又便于未参与开发的技术维护人员补充,维护。系统应具备数据库维护功能,及时根据学校信息的需求进行数据的添加,删除,修改等操作。2.2 开发和运行环境选择开发工具:FLASH5.0,Adobe Photoshop 6.0,Dreamweaver UltraDev 4。服务器端运行环境:Windows2000+IIS。客户端运行环境:Windows9x,Windows2000。2.3 系统功能分析系统功能分析是在系统开发的总体任务的基础上完成的。本站需要完成功能主要有:新闻文章发布:学校新闻,教育科研,名校名师,学生园地,招生信息等的介绍。留言系统:对来访者提供网上留言,从而让学校及时得到社会的反馈,以便和社会沟通和交流。在线调查系统:本站提供对教育和学校的热点问题进行网上调查的专栏,来访者可以通过网上调查对热点问题投上代表自己的一票。流量统计系统:本站可以对流量从多方面进行统计。包括开站天数,浏览总数,当天浏览总数,上一天浏览总数,本月浏览总数,上月浏览总数,平均浏览总数。2.4 系统功能模块设计在系统功能分析的基础上,得到如图所示的系统功能模块图。南部县伏虎中学网站前台新闻文章栏目 交互栏目 在线调查 流量统计前台新闻栏目学校新闻浏览 教育科研浏览 名校名师浏览 学生园地浏览 招生信息浏览另外为了进一步实现家校联系,特设计了家长频道和学生频道。在家长频道中,设计了教学公告,到校记录,家长留言,家长预约,家庭教育等子栏目。在学生频道中,设计了高招信息,高考话题,高考题库,开学报道,学生提问,学生意见等子栏目。家长频道中的家长留言,学生频道中的学生提问,学生意见3个子栏目是为了体现家长,学生,学校3方面互动,及时交流的一个栏目。更加方便了学生,家长对教育的资源发表心声。为了家长,学生,教师和其它任何来访者,可以获得学校的教育资源,还设计了资源下载栏目,资源下载栏目包括:软件下载,试卷下载,教案下载,表格下载4个子栏目。新闻文章后台管理新闻后台管理 教育后台管理 名师后台管理 学生后台管理 招生后台管理系统功能结构图下面我将对每个模块的总体设计作简要说明。1. 新闻文章模块新闻文章是本网站的重点。网站作为一种媒体,应当可以提供足够多的用户感兴趣的信息。南部县伏虎中学网站作为学校的一个窗口,为了满足社会对学校信息的了解的愿望,本站的新闻文章主要开设五个方面的栏目。分别是:学校新闻,教育科研,名校名师,学生园地,招生信息等。对新闻文章模块的总体设计是分为前台浏览和后台管理子模块。来访者通过前台点击可以浏览到本网站有关新闻文章等各种信息。这些信息包括:学校新闻快讯信息,教育科研信息,名校和名师的各种信息,学生园地信息,学校招生相关的信息等。本后台管理子模块完成对学校新闻文章发布子模块中的五个栏目进行后台管理员才能操作的添加信息,编辑信息,删除信息等操作。以上栏目的设置,是为了满足任意一个网站来访者。为满足家长,学生的2个特定类别的来访者,特设置了家长频道和学生频道,家长频道栏目信息根据针对家长的需求,栏目包括,教学公告,到校记录,家长留言,家长预约,家庭教育。其中教学公告包括作业公告,考试公告等子栏目。家长留言是一个互动栏目,这个栏目专门针对家长,对学校政策,教学进度的询问,意见等。学生频道栏目实现信息主要都是与学生紧密相关的栏目,比如高招信息,高考题库等。2.留言模块来访者中有不少人对学校的发展和现状有很多建议和观点需要对学校提出,作为学校的窗口,所以本站需要提供让来访者发言的平台,正是由于这个原因,所以本网站设计和规划有留言模块,本模块又分为浏览着前台发言和浏览子模块以及后台管理员删除修改发言子模块。3.在线调查模块本网站对一些社会热点提供在线调查的栏目,来访者可以对网站上的社会热点问题投上代表自己观点的一票。这样就可以综合民意得到教育等热点从而决定以后的发展方向。4.流量统计模块作为管理员应该实时知道本网站的流量。流量统计的数据包括:网站开站的天数,浏览的总数,当日的浏览数,昨日的浏览数,本月的浏览数,上月的浏览数,平均来访数等。一个网站如果没有流量,那么就说明了这个网站开设的栏目没有吸引力。作为管理员就学校可以通过流量及时知道网站开设新栏目后流量是否有变化等。5.资源下载模块一个学校网站,如果可以提供浏览着获得学校信息资源,可以提供家,校,师,生互动交流这些栏目还不够,学校的各种考试试卷等教育资源,也是来访者非常想获得的,所以,设计了教育资源下载模块。下载的资源包括教案,试卷,其它软件等。3、后台数据库的设计通过以上功能模块的分析和设计可以知道,本网站设计需要涉及到后台数据库的设计。在数据库应用系统的开发过程中,数据库的结构设计是一个非常重要的问题。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构会减小数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等。在数据库系统开始设计的时候应该尽量考虑全面,尤其应该仔细考虑用户的各种需求,避免浪费不必要的人力和物力。3.1 数据库需求分析数据库需求分析是数据库结构设计的第一个阶段,是非常重要的一个阶段。在这个阶段主要是收集基本数据,数据结构以及确定数据处理的流程,组成一个详尽的数据字典,为以后进一步设计打下基础。在仔细调查本站运作过程的基础上,我们得到本网站所处理的数据流程如图所示。管理员登录输入登录信息 来访者登录网站网站后台管理 DB 数据库 各种信息的浏览管理方向 各种信息后台管理密码管理通过以上数据流程可以看出:管理员通过登录网站,输入正确的用户名和密码可以进行网站管理。进入管理状态后可以选择管理的项目,可以是对包括对管理员密码在内的系统设置信息的修改,也可以是对本网站的各种数据库中其它的信息进行后台管理,包括对学校概况,学校新闻,教育科研,名校名师,学生园地,招生信息,招聘信息等管理。管理的内容分为:对信息的添加,修改,删除,审核等操作。来访者可以在浏览器中输入学校网址登录网站,通过点击网站的链接浏览各种相关信息。这些信息是通过调用后台数据库中相关信息在前台显示的。针对本网站的数据结构,可以通过对以上对本站数据流程的内容和数据关系分析,得出以下的数据项和数据结构如下:● 新闻信息:新闻类别号,标题,所属专栏,文章来源,文章作者,内容,发布时间,点击次数,关键字, 状态等。● 新闻类别:类别号、类别名。● 新闻所属栏目:栏目号,类别号,栏目名。● 管理员信息:用户名,密码等。● 留言信息:用户名,电子邮箱地址,来自地区,主页地址,OICQ号,ICQ号,头像,留言内容等。● 留言后台管理员信息:用户名,密码等。● 在线调查信息:调查的主题编号,主题名称,主要观点1,主要观点2,主要观点3,主要观点4,观点1的票数,观点2的票数,观点3的票数,观点4的票数。● 流量统计信息:总流量,今日流量,昨日流量,本月流量,上月流量,开站日期,最后访问IP。● 资源信息:每条资源信息包括文字介绍信息和资源存放信息2个方面,文字介绍信息和新闻信息一样,作为新闻信息的一种,所以这里重点研究资源存放信息,资源上传后存放信息包括:资源编号,信息编号,存放路径3个属性项。信息编号对应该资源文字信息在新闻信息中的编号。存放路径存放资源上传后的存放的路径和文件名。有了上面的数据结构,数据项和数据流程,就能进行下面的数据库设计。3.2 数据库概念结构设计这一设计阶段是在需求分析的基础上,设计出能够满足网站设计需求的各种实体,以及确定它们之间的关系,为后面的逻辑结构设计打下基础。本网站根据上面的设计规划出的数据项和数据结构得出的实体有新闻实体,新闻类别实体,新闻栏目实体,管理员实体,留言信息实体,在线调查信息实体,流量统计实体等。下面详细介绍本系统主要的实体以及主要实体之间的关系。1:信息实体E-R图:信息信息实体信息编号 主题类别号 ……. 栏目号2:信息类别实体E-R图:信息类别实体类别编号 类别名称 3:信息栏目实体E-R图:信息栏目实体栏目编号 类别编号 栏目名称4:管理员实体E-R图:管理员实体用户编号 用户名 用户密码5:资源实体属性图资源实体资源编号 信息编号 资源路径6:主要的实体和实体之间的关系E-R图如图所示。信息实体 1 属于 1 类别实体属于 管理 管理栏目实体 管理 管理员实体3.3 数据库逻辑结构设计我们需要将上面的数据库概念结构转化为ACCESS2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。在上面的实体以及实体之间关系的基础上,我们就可以形成数据库中的表格以及各个表格之间的关系。根据分析阶段得出的的结论,结合本网站对有关数据的存储的需要,更加方便实现该网站预期的所有功能,现将本系统设计成5个数据库表,每个表的字段名、类型、宽度设计如下:数据库中各个表格的设计结果如表3-1到表3-2所示。每个表格对应在数据库中的一个表。表3-1为新闻信息表。该表用来记录存储本网站新闻信息相关的各种信息:字段名 类型 宽度 说明newsid 自动编号 长整型 新闻编号typeid 数字 小数 类别编号borderid 数字 小数 栏目编号topic 文本 80 主题content 备注 备注 新闻内容ntime 日期 8 发布时间hits 数字 小数 阅读次数keys 备注 备注 关键字img 文本 50 相关图片nfrom 文本 100 来源modify 文本 30 编辑人audit 数字 长整型 是否审核auditer 文本 50 审核人writer 文本 50 作者imgsize 数字 小数 图片大小3-2:新闻类别表:该表用来存放本网站新闻信息的类别名称。字段名 类型 宽度 说明typeid 自动编号 长整型 类别编号typename 文本 50 类别名称3-3:新闻栏目表:该表用来存放本网站新闻信息的类别名称。字段名 类型 宽度 说明borderid 自动编号 长整型 类别编号typeid 自动编号 长整型 类别编号bodername 文本 50 类别名称3-4:管理员信息表:该表用来存放本网站管理员信息。字段名 类型 宽度 说明userid 自动编号 长整型 用户编号name 文本 15 用户名pwd 文本 14 密码3-5:资源信息表:该表用来存放本网站管理员信息。字段名 类型 宽度 说明id 自动编号 长整型 资源编号Newsid 文本 15 对应的信息编号Lujin 文本 14 资源存放路径以上是本系统的库表结构的设计简要说明。4、网站的实现完成了以上的后台数据库的设计后,下面就可以对前面系统分析阶段逻辑设计出的功能模块将技术设计转化成为物理实现,是系统建设的实现阶段。因此,网站的实现的成果将是系统分析和设计阶段的结晶。4.1:安装网站设计相关软件:本站设计需要用到FLASH8.0,Adobe Photoshop 8.0,Dreamweaver等网页设计相关的软件。其中FLASH8.0主要完成网页中相关动画的设计和处理。Adobe Photoshop 8.0主要完成网页中相关的图片的大小,格式转化,效果处理等。Dreamweaver主要完成网页的排版、布局设计。4.2 建立Asp的运行环境签于目前流行的windows操作平台有windows xp等。下面针对这XP操作平台上建立Asp运行环境的一些简要介绍。在windows 2000/XP上建立Asp的运行环境在windows 2000/XP上运行Asp的环境也是IIS。如果安装的是windows 2000 Server,IIS5.1将作为一个默认选项被安装。如果使用的是windows 2000/XP中文专业版,则需要使用控制面板“ 添加/删除程序”来安装IIS及其组件。4.3、主页的设计来访者输入网址,首先打开的就是学校网站的主页,主页设计应该美观,同时提供足够多的链接,以便来访者可以通过链接导航到自己所关心的信息页面上去。下面是该首页运行的界面图:该页面的布局结构是 ∏型布局结构。具体的说:在网页的上面是log图片和导航条。Log图片表明网站的主题:南部县伏虎中学网站。导航条将本站的栏目分成了学校概况,学校新闻,教育科研,名校名师,学生园地,招生信息,诚聘英才,校长信箱,网上留言等栏目。这些导航栏目分别设计有相应的文字链接,点击这些文字链接可以进入相应的页面。打开专业的网页设计工具Dreamweaver UltraDev 4。1:新建一个网页文件,保存为index.asp,接着设置页面属性,在属性页中标题:南部县伏虎中学。背景图案:img/bg_line.gif。定义页面中表格,单元格,文字和链接的表现风格。本页面定义的语句如下:<style>body {margin:0px;font-size:12px;overflow-x:hidden;overflow-y:scroll;color:#666666;LINE-HEIGHT: 160%}table {font-size:12px;LINE-HEIGHT: 160%}td {font-size:12px;}.txt {font-size:12px;border-width:0px;border-bottom:1px solid #000000;background-color:#def1f7;position:relative;top:0px;left:5px;padding-bottom:0px;color:#a0a0a0;}a:link.list {font-size:12px;color:#666666;text-decoration:none;}a:visited.list {color:#666666;text-decoration:none;}a:hover.list {color:#333333;text-decoration:underline;}a:link.more {font-size:12px;color:#666666;text-decoration:none;}a:visited.more {color:#666666;text-decoration:none;}a:hover.more {color:#333333;text-decoration:underline;}img {border:0px;}</style>利用布局表格工具,设置好网页的表格布局。然后就可以在表格中添加单元格。利用表格的属性面板和单元格属性面板设定好各自的属性以后,就可以在单元格中添加文字和插入图片。布局设计好的网页如下:代码设计:为了实现首页显示学校快讯,教育科研,名校名师,学生园地等文字信息以及为了方便管理。不是在每个栏目设计静态的文本信息,而是内嵌java脚本,脚本的数据源来自一个和数据库相连接的asp文件: new.asp。下面给出学校快讯,教育科研,名校名师,学生园地对应的四个java脚本语句:1:<script language="javascript" src="news.asp?typeid=10&n=10?m=14"></script>2:<script language="javascript" src="news.asp?typeid=11&n=10?m=14"></script>3:<script language="javascript" src="news.asp?typeid=12&n=10?m=14"></script>4:<script language="javascript" src="news.asp?typeid=13&n=10?m=14"></script>通过比较这四条脚本语句可以发现,脚本调用的是同一asp文件,只是一个typeid不一样。在数据库的设计中我们以及知道,这个参数是新闻的类别编号。由于这四类不同的信息都是存储在数据库中的news表中,要实现信息的分类就可以通过设定这个类别编号。这里的typeid=10对应学校新闻,typeid=11对应教育科研,typeid=12对应名校名师,typeid=13对应学生园地。下面简单的介绍一下news.asp文件的代码:在news.asp文件中首先获得上面传递的参数。通过下面的语句实现:typeid=request("typeid")n=trim(request("n"))这里的n是查询表中符合条件的多少条记录的参数。接着通过下面的语句从数据库news表中查询符合条件的最后的n条记录:sql="select top " & n & " * from news where typeid=" & cstr(typeid) & " and audit=1 order by newsid DESC"这里的audit表示已经是审核通过的信息。最后的信息显示是按newsid号倒序排列。另外在该文件的开头有包含文件:<!--#include file="function/DBOpen.asp"-->该文件用于链接数据库。在文件的末尾有包含文件:<!--#include file="function/DBclose.asp"-->该包含文件用于关闭数据库。4.4 显示新闻和下载文件的shownews.asp设计在首页中大量的新闻信息是通过链接到shownews.asp文件来显示新闻信息的。比如在首页中点击学校快讯中的任一新闻,就可以链接到该页面并显示该新闻的详情。下面是学校快讯中“南部县伏虎中学教学成果显著”这条新闻后显示的页面,该新闻的链接语句是:shownews.asp?newsid=413这里的传递的参数newsid用于传递显示的新闻的编号。该页面的设计过程首先在Dreamweaver UltraDev 4中排版设计,设计的界面如图所示:对比实际运行的界面和设计界面可以看出,导航条的设计不是在这里直接给出,而是通过脚本调用一个js文件。这样设计的好处在与可以和其它的页面共享该导航的js文件。调用脚本的语句如下:<script language="JavaScript" src="newsbar.js"></script>该newsbar.js文件的语句如下:document.writeln("<table width=100% border=0 cellspacing=0 cellpadding=0>");document.writeln(" <tr align=center>");document.writeln(" <td width=15%><a href=more.asp?typeid=9>学校概况</a></td>");document.writeln(" <td width=14%><a href=more.asp?typeid=10>学校新闻</a></td>");document.writeln(" <td width=14%><a href=more.asp?typeid=11>教育科研</a></td>");document.writeln(" <td width=14%><a href=more.asp?typeid=12>名校名师</a></td>");document.writeln(" <td width=14%><a href=more.asp?typeid=13>学生园地</a></td>");document.writeln(" <td width=14%><a href=more.asp?typeid=14>招生信息</a></td>");document.writeln(" <td width=14%><a href=more.asp?typeid=15>诚聘英才</a></td>");document.writeln(" </tr>");document.writeln("</table>");另外对比shownews.asp文件还可以看出,该页面中的新闻标题和新闻内容也是调用其它的语句和脚本的。新闻标题调用asp脚本:<%=rs("topic")%>用于显示记录集中的topic字段值。该字段是通过sql语句实现的查询记录集中的字段值。相关的sql查询语句如下:rs.open "select * from news where newsid=" & cstr(request("newsid")),conn,1,1该语句实现从news表中查询newsid编号等于传递的参数newsid的记录。对于新闻的内容显示也和新闻的主题显示类似,这里就不再说明。最后这里介绍一下该页面显示的与本新闻相关的新闻的实现技术:首先要从数据库中news表的字段说起,在news表中有一个keys字段。我们可以利用sql语句在news表中查询keys值和该新闻关键字类似的记录,就可以得到相关信息。Sql语句如下:rsc.open "select top " & aboutnews & " * from news where keys like '%" & trim(rs("keys")) & "%' and newsid<>" & cstr(rs("newsid")) & " and audit=1 order by ntime DESC",conn,1,1shownews.asp文件除了显示新闻详细信息外,该文件同时还和下载资源的详细页面共用。为了在显示一般详细信息时候,不出现下载的字样,可以利用if 语句进行判断,利用if语句对变量xz进步判断,如果xz变量等于1,表明是资源下载的详细页面,这时候就显示下载字样,下载链接来自资源表中的该资源对应路径。4.5 更多新闻页面的more.asp设计在首页中的学校快讯,教育科研,名校名师,学生园地都只是显示了该类别的10条信息,如何得到更多的信息显示?需在首页之外另外设计更多信息显示的more.asp页面。在首页的导航条上面都可以链接到该页面。在首页的导航条中分别有下面的链接语句:1:<a href="more.asp?typeid=10">…</a>2:<a href="more.asp?typeid=11">…</a>3:<a href="more.asp?typeid=12">…</a>4:<a href="more.asp?typeid=13">…</a>5:<a href="more.asp?typeid=14">…</a>6:<a href="more.asp?typeid=15">…</a>这些链接语句分别都是链接到more.asp文件,只是传递的参数不一样。Typeid=10…15分别对应学校新闻…诚聘英才。在本页中就是通过获得的传递参数确定sql语句查询news中的类别号等于传递的类别号的所有信息的。下面是传递参数为16的页面显示的界面图:该页面显示的所有news表中typeid=16的新闻信息。下面给出在Dreamweaver UltraDev 4中排版设计的结果:下面介绍该页面实现显示传递的参数的所有信息的技术:首先利用下面的代码实现建立一个记录集和实现sql查询:set rs=server.createobject("adodb.recordset")rs.open "select * from news where typeid=" & cstr(typeid) & " and audit=1 order by ntime DESC",conn,1,1由于在news表中typeid等于传递的参数的记录可能非常多,那么全部在一页中显示不方便,所以该页又用到了数据的分页显示技术。下面给出本页中用到的分页显示的代码:<% response.write "<hr size=0 width='80%'><div align=center>"response.write "第<font color=red>" + cstr(curpage) + "</font>页/总<font color=red>" + cstr(rs.pagecount) + "</font>页 "response.write "本页<font color=red>" + cstr(i-1) + "</font>条/总<font color=red>" + cstr(rs.recordcount) + "</font>条 "if curpage = 1 then response.write "首页 前页 "elseresponse.write "<a href='more.asp?typeid=" & cstr(typeid) & "&page=1'>首页</a> <a href='more.asp?typeid=" & cstr(typeid) & "&page=" & cstr(curpage-1) & "'>前页</a> "end ifif curpage = rs.pagecount thenresponse.write "后页 末页"elseresponse.write "<a href='more.asp?typeid=" & cstr(typeid) & "&page=" & cstr(curpage+1) & "'>后页</a> <a href='more.asp?typeid=" & cstr(typeid) & "&page=" & cstr(rs.pagecount) & "'>末页</a>"end if%>分页技术介绍见第五章的介绍。在该页面的左侧,显示的有推荐内容和热点文章二类信息。下面来重点介绍推荐内容实现的原理:在推荐内容的单元格中内嵌脚本:<script language="javascript" src="news.asp?kind=hot&n=5"></script>脚本中调用的文件是news.asp,传递的参数是kind和n。这里的kind值为hot,n为5。这里的hot参数不是表示news表中某个字段的值为hot,在实现的哪些信息是属于hot类别的时候,是通过sql查询语句中的通过news表中的hits的次数反序输出。也就是说hits点击次数最多的记录显示。参数N的值传递显示信息的条数。实现的关键语句如下:sql="select top " & n & " * from news where typeid=" & cstr(typeid) & " and audit=1 order by hits DESC"为了实现左边分类导读的子栏目的显示,可以从border表中查询出大类为当前的typeid编号的类别。然后利用循环语句分别将border表中符合条件的小类栏目显示到页面上。rs6.open "select * from border where typeid=" & request("typeid") ,conn,1,1学生频道中的学生留言,学生意见栏目属于学生频道栏目,但是由于学生留言和学生反馈属于交互性的栏目,所以,在后台设计中,并没有把学生留言,学生意见作为学生频道的子类别,由于不是子类,那么这里就无法显示通过从border表中查询获得。所以在这里为了显示该栏目,可以利用一个if语句来进行判断类别值,如果类别typeid编号值为17(学生频道),那么就利用if语句判断后另外添加显示学生留言等子栏目。if request("typeid")=17 thenresponse.write "<li type=circle><a href='bbs/' target=_blank>"response.write "学生提问" & "</a>"response.write "<li type=circle><a href='bbs/' target=_blank>"response.write "学生意见" & "</a>"end if4.6 后台管理登录的实现实现登录的文件有:login.asp和check.asp二个文件。Login.asp文件提供输入用户名和密码已经校验输入的是否为空等判断。输入正确的用户名和密码是否正确是通过login.asp文件中表单提交的用户名和密码传递到check.asp文件中和数据库中user表用户名和密码对比是否正确,对正确的用户名和密码赋给一个session变量。进入到管理主页。实现的语句如下:session("purview")=rs("purview")session("name")=rs("name")response.redirect "admin/index.asp"该session变量的作用是在不同的网页之间传递登录用户的身份。因为管理页面的权限只有管理员才能进入。所有当管理员登录时利用session来将管理员的身份在不同的管理页面间传递着。当用户名和密码赋给一个session变量的同时也将网页转向管理主页。在管理主页的开头部分首先需要校验身份。校验的实现的方法是检查session变量是否为空。如果为空表明没有经过管理登录获得合法的session,那么就不能进入该页面。实现这个功能的语句如下:<%if session("purview")="" thenresponse.redirect "../login.asp"response.endend if%>由以上的语句可以看出,如果session变量为空,则转向登录文件login.asp。下面是合法的session变量登录到管理主页的界面:该页面的实现使用了框架技术。整个页面分为左右二部分,左边是用户管理操作的一个列表。右边是对应的网页。管理部分的其它页面和实现的技术这里就不再一一介绍。详情可以参见源代码文件。4.7 资源下载栏目的设计资源下载重点需要设计出资源的信息的添加和资源的上传。在后台管理中,管理员可以通过点击资源下载栏目中的子栏目比如试卷下载子菜单,出现资源添加和资源上传页面。资源的添加实现分为2步,第一步把资源上传到服务器下,同时把上传路径记录到资源表中,第二将资源的文字信息添加到后台信息表中。实现资源的上传和将上传路径保存到资源表,是由Addziyuan.asp文件实现的。为了实现上传,需要用到ADO Stream和FSO对象。在ASP中,FSO的意思是File System Object,即文件系统对象。我们将要操纵的计算机文件系统,在这里是指位于web服务器之上。利用FSO等技术实现将在服务器端创建上传文件夹。基本原理是:采用ADO Stream对象的BinaryRead方法将FORM中的所有数据读出,从中截取出所需的文件数据,以二进制文件方式存盘。<form action="addziyuan.asp" target="_blank" enctype="multipart/form-data" method="post"><tr bgcolor="#FFFFFF"> <td width="20%"> <div align="right">上传文件 </div></td><td width="80%">  <input type = "file" name = "filePic" size = "30"><input type = "submit" name = "Submit" value = "上传"></td></tr></form>  程式中使用了文件对象,这样在upload_5xsoft.inc中采用BinaryRead方法读来的原始数据就不仅仅是选择的文件本身的数据,还包含该文件在用户硬盘上的路径、类型、提交页面的表单域名等相关信息的描述,这样我们就需从中提取出文件的具体内容。根据分析,数据的头部信息和数据的分界线是两对回车换行符,尾部也有分隔信息,我们能采用类似以下的方法获取文件数据。set objForm=Server.CreateObject("Scripting.Dictionary")set objFile=Server.CreateObject("Scripting.Dictionary")if Request.TotalBytes<1 then Exit Subset tStream = Server.CreateObject("adodb.stream")set Data_5xsoft = Server.CreateObject("adodb.stream")Data_5xsoft.Type = 1Data_5xsoft.Mode =3Data_5xsoft.OpenData_5xsoft.Write Request.BinaryRead(Request.TotalBytes)Data_5xsoft.Position=0RequestData =Data_5xsoft.Read  利用ADO STREAM中提供的二进制文件操作方法来完成,保存文件的语句是: StreamOBJ.SaveToFile (fileName,2)。在 这种操作中,我们能将有关的操作存放在一个类文件中,在应用时,直接将该类文件包含在ASP程式中就能了。当文件上传后,最后,系统将上传的路径和上传的文件名保存到资源表中。保存资源表的代码如下:Set rs2 = Server.CreateObject("ADODB.Recordset") sql2="select * from ziyuan" rs2.open sql2,conn,3,3 rs2.addnew rs2("lujin")=szPath & szFileName rs2.update rs2.close 5、本系统的技术特色—— 利用session变量来跟踪和校验合法用户。本网站管理员登录以及管理员进入管理页面时用到了session变量。当用户在WEB站点的网页之间来回移动的时候,可以使用Session变量来跟踪用户。Session变量与cookie有密切的关系。实际上,session变量依赖于cookie变量。在本网站管理员登录进入后台管理时,需要用到session变量。便于管理员在不同的管理网页之间移动表明身份。首先,在check.asp文件中获得该变量。管理员登录时输入的用户名和密码传递到check.asp中和数据库中管理员用户名和密码对比。正确的用户名和密码就赋值一个session变量。具体语句如下:session("purview")=rs("purview")session("name")=rs("name")在后面的管理页面中首先判断session("purview")是否为空,如果为空的话表明没有取得合法的session身份。这样就导向到login.asp页面重新登录。判断session变量的语句如下:<%if session("purview")="" thenresponse.redirect "../login.asp"response.endend if%>下面再介绍一些session变量的其它知识:session变量存活到用户离开WEB站点为止,WEB服务器是怎么检测到这件事的发生呢?在默认情况下,如果用户在20分钟之内还没有请求网页,那么WEB服务器就认为用户已经离开,通过session对象的Timeout属性可以改变这个默认的行为。Session.Timeout=60以分钟的形式声明Timeout属性值。Timeout的这个新值将应用于用户整个剩余的会话当中。另外在使用session变量之前,应该注意它与cookie一样的缺点,当一个客户使用的是不支持cookie的浏览器时,Web服务器不能创建ASPSessionIDcookie。没有ASPSessionIDcookie,当用户在网页之间移动时,session变量就不能与用户发生联系。因此尽可能地避免使用session变量。通过这次网站的设计,我掌握了一种新的系统开发工具FLASH5.0,Adobe Photoshop 6.0,Dreamweaver UltraDev 4和Asp网络技术。ASP组件的强大功能让我深感折服,ADO对象开发人员提供了一种最快、最简单和效率最高的访问所有数据库的方法,利用ADO我们可以在ASP脚本中生成对数据库的连接,并且利用该数据库连接可完成各种各样的数据库操作。ADO提供的是一种应用级程序的应用程序接口。同时在这次设计的过程中,我始终遵循软件工程的思想,这使我的工作进度明显加快,也使我少走了不少弯路。软件工程的思想,指导我一步一步从系统分析,到系统设计,再到系统实现,让我对整个系统的开发过程有了明显的全局观念,也合理地安排了整个设计的时间。由于受本人的水平,思维的局限性,本站设计的还有很多地方不足,有待以后改进。包括:由于时间,水平的原因,网页设计的不精美。比如排版设计有些不合理,动画,图片做的不是很有吸引力。这些将是我努力的方向。本文发布于北京网站建设公司尚品中国http://www.sino-web.net/
返回新闻列表