BBS论坛毕业论文_第1页
BBS论坛毕业论文_第2页
BBS论坛毕业论文_第3页
BBS论坛毕业论文_第4页
BBS论坛毕业论文_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 绪 论 . 1 第二章 BBS 论坛的介绍 . 2 第三章 开发环境概述 . 3 3 1 关键技术 . 3 3 2 数据库技术 . 6 3 3 VBScript 及 JavaScript 脚本语言 . 7 第四章 系统总体规划与设计 . 9 4 1 数据结构的设计 . 9 4 2 系统结构的设计 . 10 4 3 系统的综合要求 . 12 4 4 系统的数据元素要求 . 13 4 5 系统的逻辑模型 . 18 第五章 系统主要功能详细设计 . 19 5 1 基本算法 . 19 5 2 ASP 网页数据库的连接 . 20 5 3 ASP 网页数据库的操作 . 22 5 4 ASP 网页安全性的实现方法 . 25 5 5 在贴子中实现超文本信息输入和显示 . 28 第六章 系统的运行效果 . 32 6 1 运行环境 . 32 6 2 运行结果 . 32 第七章 总结与展望 . 33 致 谢 . 33 参考文献 . 34 第一章 绪 论 进入二十一世纪,计算机技术迅速向着网络化、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端 服务器的 C/S 结构应用系统,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。而另一种,也是本毕业设计所采用的,是称为浏览器 服务器的 B/S 结构应用系统,它的特点是在客户端直接采用了功 能强大的浏览器软件作为界面,其优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于 Internet,而且投资小、见效快,用户可以不必进行服务器方面的投资,而是去租用,甚至是免费使用 ISP 的服务器资源,因而受到越来越多中小型单位的青睐。 Internet 起源于 20 世纪 60 年代末、 70 年代初,当时,美国国防部为了将充斥于军事基地内各种厂商的电脑主机互连,让它们可以进行数据交换以便研究工作顺利进行,于是成立了 ARPA 网络计划。 ARPA 计划尝试建设一个网络系统, 它可将各种不同厂商的电脑连接起来。随着这个计划的成功,各学术单位,研究机构也纷纷与 ARPA 计划所建立的 ARPANet 连接。到了 20 世纪 80 年代, Internet 这个名词因势产生,它代表着这十年来所构建涵盖全球各地的网络系统。从 1990 年起,商业使用的 Internet 在美国急速地扩大,而 Internet 也从原来属于少数人使用的网络系统转变为普通百姓也能够使用的网络系统。 最初的 Internet 资源服务都还停留在文本模式, 1989 年,量子物理实验室( CERN)下的一个研究小组着手开发一种全新的 Internet 服务,它可以在网络上传送图片、文本、影像、声音等多媒体数据。于是由 Tim Berners Lee 领导的小组开发出了一种主从、分布式的网络服务系统,这就是 WWW,俗称 “万维网 ”。 所谓 WWW 其实就是连上 Web 服务器访问资源,取得的内容就是所谓的 “主页 ”(HomePage)。进入的网页通常不会只有一页,而是整个网站的内容。 “网站 ”是一种呈现在网络上的新兴媒体,通过 Internet 已经成为一个实时的,多媒体的信息传播渠道。它的载体主要是电脑,范围覆盖全球各地,没有国界,不分人种,时时刻刻地提供服务。目 前,人们渐渐开始把网站称之为广播、电视、报刊以外的第四新闻媒体,以 “共享、公平、公正、创新、国际化、团队精神 ”为特征的网络文明也已逐渐成为这个时代的标志,人们越来越习惯于通过 Internet 网络获取信息,通过 Internet 在网站上发表自己对社会对生活的理解和建议。 本文设计实现一个基于 Web 的通用 BBS 网站,具有 BBS 网站应该具有的相关功能。 第二章 BBS 论坛概述 BBS 系统就是提供给注册用户一个平台,会员用户可以通过 Internet 接入,登录论坛,在这个平台上发表文章、阅读文章、回复文章 等等。 此类系统通常有以下四种类型的操作用户:匿名用户、普通用户、版面管理员、超级管理员。每类用户有其不同的操作集,系统通常提供一个统一的登录页面,此页面应能自动识别不同级别的用户,并提供不同的操作界面。与之相应,此类系统通常应具有以下功能:用户注册、用户登录、发表文章、阅读文章、回复文章、分页查找、主题查找、作者查找、个人资料维护、找回密码、版面管理、版主管理、用户管理、友情链接管理等等,所有操作都可以由用户在客户端浏览器中完成,而服务器端程序会按用户的要求来完成对系统数据的操作,并将结果传给 Web 服 务器,再由 Web 服务器处理成 HTML 文件后发送到客户端浏览器。这就是所谓的 B/S 结构应用系统, B/S 结构即 Browser/Server(浏览器 /服务器 )结构,是随着 Internet 技术的兴起,对 C/S 结构的一种变化或者改进的结构。 C/S 结构,即 Client/Server(客户机 /服务器 )结构,是大家熟知的软件系统体系结构,通过将任务合理分配到 Client 端和 Server 端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。 B/S 结构下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓 N-Tier 结构。 B/S 结构,主要是利用了不断成熟的 WWW 浏览器技术,结合浏览器的多种 Script 语言 (VBScript、 JavaScript)和 ActiveX 技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着 Windows 98/Windows 2000 将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。 将应用程序分成好几个离散逻 辑组件,就是多层式结构 (N-Tier) 应用程序。最常见的选择是分成三个部分:表示层、事务逻辑层和数据层( 3-Tier) ,不过也有其它的组合。多层式结构应用程序,在一开始是解决某些与传统客户端 /服务器 (主从式 ) 应用程序相关的问题,但是随着 Web 的出现,此结构已经成为主导新程序之开发的结构。下面就是 3-Tier 结构各层功能以及经常采用的技术作个简介: 表示层主要运行于客户端浏览器,采用 Script (脚本 )语言编写。 HTML、 JavaScript、 VBScript 是此类应用系统中展示层最常用的脚 本编制语言,结合 CCS 以及 ActiveX 技术,能设计出交互相当灵活功能又相当强大的客户端网页。 事务逻辑层设计通常有三个选择: ASP 网页、 COM 或 COM+组件、 DBMS 中所执行的预存程序。将程序代码的一部分,建立成执行于数据库管理系统 (DBMS) 中的预存程序,使数据与程序代码储存在相同的位置,有助于最佳化执行效率,但是,预存程序都依赖于特定的数据库系统,在编写和侦错方面都相当复杂,只适宜于大型的商业应用系统。以 COM 对象的方式,编写中间层 (Middle Tier) 事务逻辑,可以使用全功能的语 言,来产生经过编译的执行程序,执行效率也相当高,此外,在 COM 对象中包装事务逻辑,还可以清楚地将此程序代码与网页内含的展示程序代码分隔,这样可以使应用程序更易于维护,但是, COM 对象的部署也有一定的麻烦,新编写的组件对象,只有在服务器重新启动后才能被应用程序调用。用 ASP 网页设计事务逻辑相对来说比较简单,但是, ASP 网页采用脚本语言来编写事务逻辑,比如VBScript,程序代码只有在执行时才被翻译,这样会降低执行效能,此外, ASP 网页中的程序代码也是难以维护的,因为事务逻辑程序代码与建立使用者接口的 展示程序代码彼此混杂在一起。 数据层较为灵活,视系统规模可选择 Sybase、 Oracle、 My SQL、 SQL server 或者 MS Access。 综上所述,结合 BBS 论坛系统实际需要,本 BBS 系统采用 B/S 结构。论文设计开发的系统为通用 BBS 系统,系统应该具备较大的可伸缩性,应该能适应最基本应用最广泛的 WEB 平台。另外,通用系统应该具备较大的可扩展性,目前, ASP.NET 技术发展较快,未来应该能以较小的成本用 ASP.NET 重写本系统,因此,这次设计开发的 BBS 论坛事务逻辑层设计采用 ASP 网页;至 于数据层,本系统采用最基本的MS Access 数据库系统,重写时采用 SQL 等大型数据库。 第三章 开发环境概述 设计开发的 BBS 论坛系统要求客户端支持 IE6.0 以上或与之兼容的浏览器软件,客户端硬件最低要求对应于 IE6.0 的硬件平台要求。服务器端要求支持 ASP 以及 MS Access 数据库。 BBS 论坛的开发环境和开发工具为: Windows xp, PWS, FrontPage2000, MS Access。 3 1 关键技术 3 1 1 ASP 技术 ASP 技术是一种类似 HTML(Hypertext Markup Language 超文本标识语言 )、 Script 与 CGI(Common Gateway Interface 通用网关接口 )的结合体,简单的讲它是一种运行于服务器的脚本语言,但是其运行效率比 CGI 更高、程序编制也比 HTML 更方便且更有灵活性,程序安全性及保密性也远比 Script 好。 其特点归纳如下: 1. ASP 可以和 HTML 或其他脚本语言 (VB Script 与 Java Script)互相嵌套。 2. ASP 是一种在 Web 服务器端运行的脚本语言,因此,程序代码完全保密。 3. ASP 以对象为基础, 因此可以使用 ActiveX 控件继续扩充其功能。 4. ASP 内置 ADO 组件,因此可以轻松地存取各种数据库,大大缩短了程序开发时间。 5. ASP 可以将运行结果以 HTML 的格式传送至客户端浏览器,因此 ASP 可以适用于各种浏览器。 下面来介绍一下 ASP 的几个内置对象。 1.Request 对象。 HTTP 通讯协议是一种请求与响应 (Request/Response)的通讯协议,因此通常由客户端向 Web 服务器提出请求, Web 服务器才会响应信息。因此在 ASP 中,特别将 “客户端提出的要求 ”与 “Web 服务器响应的信息 ”等动作 封装成 Request 对象与 Response 对象。换而言之, Request 对象通常包含了用户端的相关信息,如浏览器的种类、表头信息、表单参数及 cookies 等等。 2.Response 对象 ,每一种程序语言或开发工具一定都有与用户沟通的界面或函数, ASP 也不例外。在 ASP 中负责将信息传达到用户的对象就是 Response 对象。 3.Server 对象, Server 对象允许用户取得服务器提供的各项功能,例如, Server 对象的 CreateObject 方法允许客户端用户建立一个 ActiveX Server 组件实例,其所 建立组件实例会随着服务器端完成 ASP网页的处理而自动被释放。如果希望此对象实例可以跨多个 ASP 网页,就要用到 Session 对象保留该组件实例,直到 Session 对象的运行时间到了,或是在其他 ASP 网页调用 Session 对象的 Abandon 方法,此组件实例才会被释放。 4.Session 对象, Session 对象在 ASP 程序编写中占了相当重的份量,由于网页是一种无状态的程序,因此几乎无法知道用户的浏览状态。必须通过 Session 对象记录用户的相关信息,以供用户再次对此 Web服务器提出要求时作确认,例如,在某些特 定的网页中,常需要用户输入确认的账号和密码,假如这些身份确认的结果无法保留,那岂不是每一个网页都需要重新输入一次密码。换而言之,每一个 Session 的用户, Web 服务器均会自动的为它们建立一个 Session。必须说明, Session 对象只能适用于具备 Cookie功能的浏览器。 3 1 2 ADO 技术 ADO(ActiveX Data Objects)是微软公司提供给网页开发者在网页中存取数据库的最新技术,它也是 ASP 内置的重要组件, ADO 主要的目的是为了存取或修改数据源的数据、或增加数据到指定的数据源,数据 源不仅包括数据库,而且包括 dBase、 Excel、 Foxpro、 Access 或文本文件等一些小型的数据表,所以,只要是 ODBC 驱动程序所能存取的数据源皆是 ADO 存取的对象。 ADO 主要是由 Connection 对象、Command 对象、 Parameter 对象、 Recordset 对象、 Field 对象、 Property 对象及 Error 对象等七个对象与 Fields 数据集合、 Properties 数据集合、 Parameters 数据集合及 Errors 数据集合等四个数据集合所组合而成,其功能概述如下。 ADO 提供的七个对象: 1. Connection 对象负责与指定的数据源进行连接,除此之外,它还可以通过事物 (Transaction)来确保在事物中所有的数据源变更的全部成功。 2. Command 对象负责对数据库提供请求,也就是传递指定的 SQL 命令。换而言之, Command 对象必须经过一个已经建立的连接 (Connection 对象 )发出数据操作语言 (DML,Data Manipulation Language)来操作数据源的数据,这些命令通常包括 INSERT(增加记录 )、 DELETE(删除记录 )、 UPDATE(更新记录 )、或是 SELECT(以 Recordset 的形式选取数据 )等。除此之外,也可以通过 Command 对象对数据库发出数据定义语言 (DDL,Data Definition Language),例如 CREATE TABLE(建立数据表 )、 DROP TABLE(删除数据表 )或 ALTER TABLE(修改数据表结构 )等。 3. Parameter 对象负责传递 Command 对象所需要的 SQL 命令参数。 4. RecordSet 对象负责浏览和操作从数据库取出的数据,换而言之, RecordSet 对象就象是一个二维的数组,数组的每一行表 示一个数据记录,而每个数剧列包含一个或多个数据字段,即 Field 对象。 5. Field 对象表示指定 RecordSet 对象的数据字段。 6. Property 对象表示 ADO 的各项对象属性值,换而言之,每个 ADO 对象都会有一组描述和控制对象行的属性。 7. Error 对象负责记录连接过程所发生的错误信息。 ADO 提供的四个数据集合: 1. Connection 对象包含 Errors 数据集合,在 Errors 数据集合中包含数剧源响应失败时所建立的 Error对象。 2. Command 对象包含 Parameters 数据 集合,在 Parameters 数据集合中包括 Command 对象所有的 Parameter 对象。 3. RecordSet 对象包含 Fields 数据集合,在 Fields 数据集合中包含 RecordSet 对象的所有 Field 数据字段对象。 4. Connection 对象、 Command 对象、 RecordSet 对象与 Field 对象皆包含一个 Properties 数据集合,在 Properties 数据集合中包含所对应 Connection 对象、 Command 对象、 RecordSet 对象与 Field 对象的 Property 对象。 3 2 数据库技术 1、 MS Access 数据库 数据库( Database)是一系列信息资源的集合。在一个数据库中,与一个项目有关的所有信息都可以叫做一条记录 (Record)。每一条记录都是由一系列的字段 (Field)组成的。一系列记录的集合就构成了数据表格 (Table)。对于一个简单的 “平面文件 ”的数据库来说,它仅包含了一个数据表格,而对一个 “关系型 ”数据库来说,它却包含两个或两个以上的数据表格,表格的各字段之间存在这一种或多种关系(有时可以把这种关系叫做 “链接 ”)。 简单的平面文件数据库的 用途非常有限,而关系型数据库却能够包含数据以百万计甚至以亿计的记录,并可以利用复杂的标准对这些记录进行操作,例如排序和统计。把它们叫做 “关系型 ”数据库,是因为需要在这些数据表格的字段之间建立特定的链接关系。关系型数据库的优点在于:通过将一个表格中的字段与另一个表格中的字段联系起来,两个表格之间的信息可以相互调用,可以避免信息的重复记录,也可以避免管理上的混乱。因此关系型数据库可以减小数据库的体积,这对于大型的数据库来说具有非常重要的意义。 建立 WEB 站点时,可以使用两种主要的数据库: Microsoft SQL Server 和 Microsoft Access。 Micro SQL Server 是一种功能齐全的客户机 /服务器数据库产品,适用于系统经常被大量的用户查询的情况。对于查询次数有限的情况,则可以采用中小型数据库的代表产品 Microsoft Access。 Microsoft Access是理想的入门级产品,其中提供了大量的向导,可以辅助完成数据库的创建和管理。 2、数据源 (DSN) ASP 网页通过 DSN 数据源或者 DSN-less 方式连接网页数据库。 DSN 数据源方式: ASP 网页通过标准的 ODBC( Open DataBase Connectivity)数据源 DSN( Data Source Name)接口访问数据库数据。 ODBC 属于一种标准的数据接口,提供各类应用程序一个数据访问的标准方法。 ODBC规范为应用程序提供了一套高层调用接口规范和基本于动态链接库的运行支持环境。使用 ODBC 开发数据库应用程序时,应用程序调用的是标准的 ODBC 函数和 SQL 语句,数据库的底层操作由各个数据库的驱动程序完成。使用 DSN 数据源方式,用户必须以手工的方式进行 ODBC 配置,添加一个指向用户数据库的系统数据源 DSN, ASP 网页使用 DSN 数据源字符串连接至用户数据库,例如: strDB-DSN=”DSN=DSN名称 ;uid=XXX;pwd=xxx”。 DSN-less 数据源方式:使用本方式连接数据库,就必须自行提供 DSN 数据的相关信息,最重要的是驱动程序。例如: strDBConn=”DRIVER=Microsoft Access Driver (*.mdb); DBQ=c:userdb.mdb”。 3、结构查询语言( SQL) SQL 是结构查询语言 (Structure Query Language)的英文缩写,它是使用关系 模型数据库的应用语言,由 IBM 在七十年代开发出来的,实现了关系型数据库中的信息检索。 1992 年制定了 SQL 标准 SQL-92,它的全名是 “International Standard ISO/IEC9075:1992, Database Language SQL”。 SQL 标准的确定使大多数数据库厂家纷纷采用 SQL 语言作为其数据库检索语言。 利用 SQL 语言,可以查询和管理自已的数据库。它由大约 30 条命令构成,但实际只需要少数的几个命令就可以完成相当多的工作,常用的 SQL 查询命令有: Select、 Insert、 Delete、 Update 等。 3 3 VBScript及 JavaScript脚本语言 Script(脚本 )是由一组可以在客户端浏览器上运行的命令组合而成的语言,可以把它想像成一个运行于客户端上的可执行程序。目前在网页编制上比较流行的脚本语言包括 VBScript 及 JavaScript。它们都是一种与 HTML 语言相似的描述性语言,也是以文本形式存在,不像 C 语言或 Java 语言那样,需要编译连接成字节码形式的可执行程序。 Script 语句可以单独存成文档,也可以被嵌入到 HTML 的文件之中,与 HTML 语句结合在一起。当 需要将 Script 语句直接加入到 HTML 文件中时,只要使用一个 HTML 标记符号 即可。例如: temp var i = 10; document.write (i); This is a JavaScript example. 另外, Script 程序在 HTML 中的位置 也比较自由,它可以在 HTML 文件中的任何位置。 脚本语言是一种解释性语言,可以直接由浏览器来解释执行。并且可以直接访问浏览器中的各种对象,如窗口对象、文档对象、框架对象、超链接对象等。脚本语言可以实现的功能很多,可以用于定义网页、在网页中加入动画、对网页中的各种元素进行处理,特别是在处理表单方面有很强功能。不仅如此,它还可以很方便地控制浏览器中的各对象的属性。例如,可以实现打开或关闭浏览器窗口、设置窗口状态、改变窗口中的超链接位置等。总之,一些常用的功能都可以用脚本语言实现。 开发设计得 BBS 系统中就运用了 大量的脚本语言,一方面用来完成表单提交前的数据验证任务,另一方面用来完成打开新的窗口、关闭当前窗口、返回前一页及下拉菜单等功能。通过使用脚本语言既防止了大量错误数据被提交到服务器,进而节约了宝贵的系统资源;也使网页更加美观、操作更加方便。大大提高了系统的性能。 1、 JavaScript Java 语言的功能很强大,在网页设计中非常的有效,但是它要求创建 APPLET 的人员必须是程序设计员。Sun Microsystems(太阳微系统)公司为了消除对于 WEB 站点的开发人员的特殊要求,专门发布了 JavaScript。 JavaScript 脚本语言是一种解释性,基本对象的脚本语言。虽然,它没有那些真正意义上的面向对象语言那么多的特性,但是对于它的预期功能而言,它能够实现的功能已经够大了。 Javascript 并不是任何一种语言的删节版(它只是与 Java 语言的关系很接近) ,它也不是任何一种语言的简化版。然而,它的使用是有限的。不能使用它创建一个独立的应用,比如,它几乎不能进行文件的读写。此外, Javascript 脚本只能运行在解释性语言的环境下,或是 WEB 服务器和 WEB 浏览器上。 Javascript 是一种比较随意的语言 ,这就并不意味着不一定必须明确地声明变量的类型。此外,在很多情况下, Javascript 脚本语言在需要的时候可以进行自动转换。 JavaScript 是 Java 与 HTML 结合的产物, HTML 文档中可以嵌套 JavaScript 命令,但是 JavaScript语句不需要编译,浏览器可以直接执行 JavaScript 语句。利用 JavaScript 结合 CCS 可以创建交互能力很强的 WEB 界面。 2、 VBScript 语言 当在设计 WEB 站点中使用 JavaScript 时, Microsoft 公司也在其非常流行的 Visual Basic 的基础上,推出了另一种脚本设计语言 VBScript。 Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的 Script 应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 WEB 客户机 Script 和 Microsoft Internet Information Server 中的 WEB 服务器 Script。 JavaScript 可以支持大多数的平台,而 VBScript 目前只能在 Windows 环境下的浏览器中运行。但是由于大多数用户的操作系统都选用 Windowst 系列,因此,许多 WEB 站点的开发人员研始大量的使用 VBScript。 VBScript 流行的主要原因是它将 ActiveX 对象的使用变得非常的简单。 ActiveX 是 Microsoft 推出的一种新技术,它支持 WEB 页面调用类似 OLE 的对象。 VBScript 使用 ActiveX Script 与宿主应用程序对话。使用 ActiveX Script,浏览器和其他宿主应用程序不再需要每个 Script 部件的特殊集成代码。 ActiveX Script 使宿主 可以编译 Script、获取和调用入口点及管理开发者可用的命名空间。通过 ActiveX Script,语言厂商可以建立标准 Script 运行时语言。 Microsoft 将提供 VBScript 的运行时支持。 Microsoft 正在与多个 Internet 组一起定义 ActiveX Script 标准以使 Script 引擎可以互换。 ActiveX Script 可用在 Microsoft Internet Explorer 和 Microsoft Internet Information Server 中。因此对 VBScript 脚本语言 的使用也变得重要起来。 第四章 系统总体设计 4 1 数据结构的设计 参照用户与版面之间管理关系 ER 图,可以将用户、版面转换成三个关系模式,设计如下: 1.论坛版面关系模式(版面 ID#,版面中文名,版面简介); 2.用户关系模式(用户名 #,用户密码,用户密码提示问题,问题答案,用户 EMAIL,用户真名,用户性别,用户出生年月,用户主页,用户证件名称,用户证件号码,用户联系方式,用户积分); 3.管理员关系模式(管理员 ID#,用户名 #,申请管理版面 ID#,申请管理理由,申请被批示状态); 参照用户与贴子之 间 ER 图,可以将其转换成二个关系模式,设计如下: 用户关系模式(用户名 #,用户密码,用户密码提示问题,问题答案,用户 EMAIL,用户真名,用户性别,用户出生年月,用户主页,用户证件名称,用户证件号码,用户联系方式,用户积分); 贴子关系模式(贴子 ID#,标题,贴子类型,主贴子 ID,回复数量,点击次数,标题图像,贴子内容,贴子书写时间); 按照上述转换方法,再结合系统一些功能以及性能方面的需要,系统所有关系模式设计如下: 论坛基本信息(论坛信息 ID#,论坛名,版权说明,论坛公告标题,公告内容,最后一次修改时间 ); 论坛版面信息(版面 ID#,版面中文名,版面英文名,版面简介); 用户基本信息(用户名 #,用户密码,用户密码提示问题,问题答案,用户 EMAIL,用户真名,用户性别,用户出生年月,用户主页,用户证件名称,用户证件号码,用户联系方式,用户积分); 管理员基本信息(管理员 ID#,用户名 #,申请管理版面 ID#,申请管理理由,申请被批示状态); 贴子基本信息(贴子 ID#,版面 ID#,用户名 #,标题,贴子类型,主贴子 ID,回复数量,点击次数,标题图像,贴子内容,贴子书写时间,最后一次更新贴子时间); 友情链接基本信 息(链接 ID#,用户名 #,链接名,链接 URL,链接说明); 用户访问日志信息(日志 ID#,用户名 #,用户登录 IP,登录时间,退出时间); *注:第一个带 “#”标志的属性为本关系模式的主键,其它为外键。 4 2 系统结构的设计 系统主页面自动进行身份判别,按照访问者的身份自动进入其相应的操作界面,其流程如下所示: 版主会员? 超级会员操作界面 版主会员操作界面 普通会员操作界面 匿名用户操作界面 超级会员? 普通会员? 结束 N Y Y Y N N 开始 图 4-1 系统流程图 各类用户的操作界面所具有的功能如下表所示: 表 4-1 各界面功能表 4 3 系统的综合要求 1、 系统界面要求 设计开发的 BBS 论坛的初始界面假定用户是匿名登录,用户可以通过初始界面提供的统一的用户登录接口,登录进入各自的操作界面。 用户 类型 功能 类型 功能 过程 编号 过程名 匿名 用户 私有 登录为正式会员 P1-1 Userlog.asp 注册为正式会员 P1-2 Userreg.asp 会员找回遗失密码 P1-3 Getpass.asp 公有 查看系统会员列表 P1-4 Useradmin.asp 查看系统版主列表 P1-5 Adminorlist.asp 查看各版面文章列表 P1-6 Topic.asp?bid=XXX 查看热门话题 P1-7 Topic.asp?method=hot 查看人气贴子 P1-8 Topic.asp?method=hits 查看某篇文章 P1-9 Show.asp?id=XXX 普通 会员 私有 申请为版面版主 P2-1 Adminapply.asp?bid=XXX 注销会员资格 P2-2 Userlogoff.asp 公有 个人资料维护 P2-3 Usermodify.asp 发表贴子 P2-4 Post.asp?bid=XXX 回复贴子 P2-5 Post.asp?id=XXX&bid=XXX 重新以匿名身分登录 P2-6 Quitbbs.asp 版主 会员 公有 贴子管理 P3-1 Articleadmin.asp 张贴公告 P3-2 Newspost.asp 友情链接管理 P3-3 Linkadmin.asp?bid=XXX 超级 会员 公有 论坛基本设定 P4-1 BBSset.asp 版面管理 P4-2 Boardadmin.asp 2、 系统功能要求 设计开发的 BBS 论坛应具有通常 BBS 网站应该具有的基本功能,包括用户注册、用户登录、匿名登录、发表文章、阅读文章、回复别人的文章、分页查找、主题查找、作 者查找、多种方式排序、个人资料修改、在线人数统计等,此外,用户在发表贴子时,能输入带格式文本,用户在发表或回复一篇贴子时,能获得相应的积分,其积分能反应此用户在本论坛的活跃程度。 设计开发的 BBS 论坛的操作用户按不同级别依次可分为:匿名用户、普通会员用户、版主会员用户、超级用户。高级别的用户可以继承低级别用户的公用功能。同时,各级别用户具有一定的只有以本级别身分登录才具有的私有功能。 匿名用户功能要求 -通用功能:查看各版面文章、查看系统版主列表、查看系统会员列表;私有功能:注册为系统正式会员、会员找回遗 失密码、登录为正式会员。 普通会员功能要求 -通用功能:发表或回复贴子、个人资料维护、退出或重新以匿名身分登录;私有功能:申请为版面版主、注销会员资格。 版主会员功能要求 -通用功能:贴子管理、张贴公告、友情链接管理。 超级用户功能要求 -通用功能:论坛基本设定、版面管理、版主会员管理、普通会员管理。 3、 系统性能要求 对于贴子查看、发表贴子以及回复贴子这类频繁发生的系统操作,要采取适当的技术优化这类数据操作,以提高数据存取效率。 4、 安全性保密性可靠性 等其它方面的要求 高级别用户的所有管理操作要有针对低级别用户的身分识别功能,以防止低级别的用户越权执行高级别用户才具有的操作功能。 4 4 系统的数据实体要求 根据论坛的功能需求,论坛管理和维护以下几种数据元素(实体 Entity):会员、管理员、论坛、论坛版面、贴子、友情链接、日志。 1、会员实体 会员用户包含这样一些基本属性:用户名、用户密码、用户密码提示问题、用户密码提示问题答案、用户EMAIL、用户真名、性别、出生年月日、主页 URL、联系方式、证件名称、证件号码、积分。其中,用户名为用户唯一标志,不允 许重名。积分为此用户在本论坛发表文章以及文章被其它用户关注程度所累积的分数,作为衡量此用户在本论坛活跃程度的一个标志。 2、管理员 管理员实际上派生于会员用户,意味着只有会员用户才有资格申请本论坛各版面的管理权限,因此,他除了包含会员用户所有的基本属性以外,还应包含以下几个属性:申请管理版面、申请理由、申请被批准状态。一个管理员可以管理几个版面,一个版面可以由几个管理员管理,所以,应该有一个管理员序号来唯一标志这个实体。另外,管理员也分为两类,一类是超级管理员,具有管理和维护本论坛所有数据信息的权限,另一类 是普通版主,只能管理与某版面相关的数据信息,可以用申请管理版面以及申请被批准状态来区分这两类管理员,如果申请管理版面为零用申请被批准通过,则此会员就为超级管理员,如果申请管理版面在本论坛存在且申请被批准通过,则此会员就为版主管理员,否则,此会员仍为普通会员。 3、论坛 论坛基本信息比较稳定,只能为超级管理员所维护,此实体包括以下一些基本属性:论坛名称、论坛版权信息、论坛公告、公告内容。 4、版面 论坛版面包含这样一些基本属性:中文名称、英文名称、版面简介、版面公告。此外,论坛版面实体与管理员实体有联系,与贴 子实体也有联系。 5、贴子 贴子包含以下一些基本属性:所属版面,作者,标题,贴子类型,所属主贴,回复数量,点击次数,标题图像,贴子内容,贴子书写时间,最后一次更新贴子时间。贴子包括两种类型:主贴和回复。贴子序号为此贴子唯一标志。 6、友情链接 友情链接实体包含以下一些基本属性:添加本链接管理员,链接名,链接 URL,链接说明。一个管理员可以添加多条友情链接。除超级管理员外,已添加的友情链接只能由添加作者修改或删除。链接名,链接 URL 不可重复,可作主键。 7、日志 日志包括以下一些基本属性:登录会员,登录 IP,登录时间,退出时间。 设计开发的 BBS 实体之间主要有以下几类联系( Relation) :用户与论坛版面之间存在管理联系( M: N)、用户与贴子之间( 1: M)、用户与友情链接( 1: M)、用户与日志( 1: M)、论坛版面与贴子( 1: M)。 几个基本实体 -联系图( ER 图)如下: 管理 申请管理理由 批准否 用户名 密码 EMAIL 性别 生日 其它 用户 M 论坛版面 版面名 简介 公告 N 图 4-2 用户与版面之间管理关系 eeeedeERtu 图 发表 发表时间 用户名 密码 EMAIL 性别 生日 其它 用户 1 M 贴子 标题 类型 其它 图 4-3 用户与贴子之间 eeeeeEEER 图 匿名用户 普通会员 版主会员 超级会员 论坛 论坛版面 友情链接 贴子 日志 论坛数据信息处理系统 图 4-4 基本 Web 的通用论坛系统数据流图 4 5 系统的逻辑模型 系统逻辑模型数据流简要说明: 1、匿名用户与信息处理系统之间 系统的输入数据流:注册资料、登录数据、找回密码数据; 系统的输出数据流:用户遗失密码、某篇贴子内容、会员列表、版主列表、版面列表、人气贴子列表、热门话题列表; 加工逻辑:注册加工、登录加工、用户找回密码加工。 2、会员用户与信息处 理系统之间 系统的输入数据流:版主资格申请、注册资料修改、发表贴子、回复贴子; 系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表、人气贴子列表、热门话题列表; 加工逻辑:版主资格申请、注册资料修改、发表贴子,回复贴。 3、版主与信息处理系统之间 系统的输入数据流:注册资料修改、发表贴子、回复贴子、友情链接维护、发布公告、管理版面贴子维护; 系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表、人气贴子列表、热门话题列表; 加工逻辑:注册资料修改、发表贴子、回复贴子、友情链接维护、发布公告 、管理版面贴子维护。 4、超级会员与信息处理系统之间 系统的输入数据流:注册资料修改、发表贴子、回复贴子、友情链接维护、添加版面、论坛基本信息维护、论坛所有贴子维护、版主申请批复; 系统的输出数据流:某篇贴子内容、会员列表、版主列表、版面列表、人气贴子列表、热门话题列表; 加工逻辑:注册资料修改、发表贴子、回复贴子、友情链接维护、添加版面、论坛基本信息维护、论坛所有贴子维护、版主申请批复。 第五章 系统主要功能详细设计 5 1 模块的设计 基于 WEB的通用 BBS系统其系统定义部分采用面对对象的系统分析方 法,并结合传统的结构化分析方化,设计出其系统模型,如果采用面向对象的程序设计语言开发系统,则可以很方便地从系统分析阶段平滑地过渡到设计阶段。但是,本系统采用 ASP 技术, ASP 不支持继承和强类型转换等面向对象程序设计所必需的功能,只能采用一定的技术措施,用传统的结构型程序设计方式实现诸如继承等这类功能。下面就部分模块实现做一下简要说明: 1系统主页面 Main.asp 这是 BBS 网站的 HomePage,程序首先进行用户身份判断。 论坛的用户身份信息经登录后保存在 SESSION 对象的 USERNAME 和 ADMINBOARD 两个变量里。匿名用户(既 Guest)这两个变量为空或没有定义;普通用户 USERNAME 变量有用户在论坛注册的会员昵称,但其 ADMINBOARD 变量没有定义或为空;版主用户其 ADMINBOARD 变量保存有他管理版面的 ID;如果 ADMINBOARD 变量为 “0”则为超级会员。 依据程序对用户所做的判断,插入相应用户的功能操作菜单。这就实现了不同层次对象的同一方法的不同功能。譬如 Guest:main.asp 载入的功能菜单为 genhead.asp,Super:main.asp 载入的功能菜 单则为superhead.asp。注意:功能菜单文件其实就是普通的 HTML 文件,按照各自所属的操作对象列示其相应的功能链接。 2. 各级别用户私有功能的实现方法 私有功能是不能为比其级别高的用户所继承的功能。因此,私有功能 ASP 网页应进行具体某个级别身份的识别,非这个级别层次的用户则被拒绝访问。 3. 各级别用户公有功能的实现方法 公有功能是可以为比其级别高的用户所继承的功能。因此,公有功能 ASP 网页只进行比其级别低的用户身份的识别,如果此用户级别低则拒绝继续访问。此外,高级别的用户可以进行功能重载,譬如, 匿名用户只能查看论坛会员列表,但是,超级会员在查看的同时,还可以进行管理操作,如修改,删除等。下面是所有公用功能的重载列表: Guest:useradmin.asp 查看本论坛注册会员列表; Super:useradmin.asp 查看并管理本论坛注册会员列表; Guest:adminorlist.asp 查看本论坛版主列表; Super:adminorlist.asp 查看并管理本论坛版主列表; Adminor:articleadmin.asp 自已管理辖版面范围内的贴子维护; Super:articleadmin.asp 本论坛所有版面贴子维护; Adminor:linkadmin.asp 添加或维护自已曾添加的友情链接; Super:linkadmin.asp 维护所有友情链接列表; Adminor:newpost.asp 在自已管理版面发布公告; Super:newpost.asp 在任一版面发布公告; 4. 会员用户积分的计算模型 会员用户每提交一篇文章,可以积十分。回复某篇文章,则可以积五分,同时原文作者积三分。 5. 版主申请条件以及计算模型 版主申请条件:为正式注册会员;一 个会员最多管理二个版面;一个版面最多五个管理员。 计算机模型:用户提出申请,超级用户审批。审批完成前此会员不能再次就同一版面申请版主权限。 6超文本信息输入 具有普通会员身份以上级别的用户,发表贴子或回复贴子时,可以在其贴子内插入诸如滚动文字,字体大小颜色不同的文字,以及超链接等等。系统接受用户输入时对带格式文本应进行相应的编码 (Encode),系统显示带超文本信息的贴子时则应进行相应的解码 (Decode)。 5 2 ASP网页数据库的连接 网页数据库的连接方法有两种,一种是 DSN 数据源,另一种是 DSN-less 方式,即不建立 DSN 连接数据。考虑最简单的 BBS 系统应用环境,使用互联网上免费资源,通常互联网上免费主页空间只支持简单的 ASP 应用以及 Access 数据库应用, Access 数据库通常要求放置在固定的虚拟目录位置,譬如: db目录位置,数据库的连接也只支持 DSN-less 方式,这也是自然的。另外, BBS 通常只作为 Web 应用的一部分,或者说作为个人主页或商业网站提供的一个附加功能,这个时候, BBS 论坛系统通常都安装在主页空间一个单独的目录下,假定为 BSS。 所有要进行数据库存取的 ASP 网页都要以 DSN-less 方式进行数据库连接,由此可以将执行数据库连接的ASP 代码单独形成一个插入文件,通常插入文件都是以 .inc作为扩展名,考虑到安全性的需要,防止用户直接输入文件名下载此插入文件,所以仍然以 .asp作为插入文件的扩展名,比如,将一个用作数据读操作的数据库连接插入文件名命名为 dbconr.asp,下面就是其典型代码: 数据库连接操作是一个相当频繁的操作,可以采用适当的技术来进行数据库连接优化,以提高数据库连接性能。在 ASP 的数据库编程中, connection 对象是不可能离开的一个对象,在对数据库进行任何的操作,比如更新记录,插入,删除,检 索等,都必须借助于 connection 对象来完成。形象地来说, connection对象就是程序与数据库沟通的管道,所有对数据库的操作,都必须经过它,因此,无论以何种方式连接数据库前,总是少不了执行下列的代码: Set objDBConn=Server.CreateObject(ADODB.Connection)。 建立一个 connection 对象的实例变量,然后才能在它的基础上建立 recordset 对象或是 command 对象来操作数据库。既然 connection 对象是如此的重要,那么如何优化和管理好 connection 对象对数据库程序来说是极其重要的,它关系到程序的性能。 每当一个客户执行数据库操作时,就需要借助一个 connection 对象,而每个 connection 对象就会占用服务器的一部分资源,而数据库的同时连接数不可能是无限的,因此。在考滤要提供高性能的数据库 Web程序时,需要考虑如何去减少服务器的开销。一般来说。每个 ASP 页面中建立一个 conn ection 对象,都会在服务器中产生一个对数据库的连接。而不同的页面的 connection 对象是不能共享的。那么。可不可以使同一个用户所访问的不同页面共享 一个 connection 连接通道呢。 回顾一下 ASP 六大内置对象的 session 对象,它可以为某个特定的用户来保存私有的数据,如果把 connection 对象保存在 session 对象中,是否可以使不同的 ASP 页面都使用同一个连接通道呢?看看下面的这段程序。 在这个数据库连接中,使用了 session 对象,首先,建立一个 objDBConn 的连接对象,然后连接到数据表 userlist 中,取得连接句柄后,把它保存在 session(dbconn)这个 session 变量中,在打开记录集前,从 session(dbconn)中取出句柄,借助于 session 对象。可以使不同的 ASP 页面共用一个连接对象,减少了对服务器内存的开销,而也不需要担心,当一个客户因为错误操作导致服务器不能释放该被占用的 session 连接对象,因为每个客户的 session 对象是有一定的生存期限的,过了这个期限,服务器就会自动把它释放掉。 然而,数据库连接性能的提高是以一定的服务器资源消耗为代价的,所以,就要在其中权衡利弊。通常,利用别人的主机空间来作为自已 BBS 系统的平台,就应该尽谅避免使用过多的 服务器资源,诸如 APPLICATION 以及 SESSION 变量,反之,主机资源丰富,而应用系统相对较少,则可以考虑采用上述优化方式。 5 3 ASP网页数据库的操作 关于网页数据库的操作, ASP 拥有三种方法: ADO 组件的 Connection 对象配合 SQL 语法; ADO 组件的 Command 对象执行 SQL 语法;使用 ADO 组件的 RecordSet。每种方法各有特点。 1、 ADO 组件 Connection 对象配合 SQL 语法 在网页上使用 SQL 指令处理数据的访问,需要使用 ADO 组件的 Connection 对象建立数据连接,以 便让下达 SQL 指令到服务器端的数据库,处理表中的记录。参照 ASP 网页数据库的连接所介绍的方法,首先建立一个 Connection 对象;然后再打开 DSN-less,同时,根据将要进行数据操作的类型,设置其Mode 属性;最后,使用 Connection 对象的 Execute 方法下达 SQL 指令,通常在使用 Execute 方法执行 SQL 指令前,应该指定其 CommandTimeOut 属性。以会员注册为例,用户填写完注册资料以后,提交系统,系统进行用户资料插入操作: 这是最基本的数据库操作 方式,特别是对于表的插入、删除和更新记录以及单条数据的查询操作,是三种方式中最为简单有效的一种。设计开发的 BBS 论坛中,用户身份验证、发表贴子以及回复贴子等相关数据库操作相当频繁,对数据存取效率有相当的要求,至于在数据存取的灵活性方面要求不高,因此,大部分都是采取 ADO 组件 Connection 对象配合 SQL 语法这种数据库操作方式。 2、 ADO 组件的 Command 对象执行 SQL 语法 Command 对象和 Connection 对象的 Execute 方法一样能够执行 SQL 指令。在建立 Command 对象前一样需要建立和 打开数据连接,假设活动连接 objDBConn 已经建立好,其后步骤如下所示: Step1:建立 Command 对象,其程序代码如下: Set objDBCommand=Sever.CreateObject(“ADODB.Command”); Step2:接着指定 ActiveConnection 属性为目前打开的数据连接,代码如下: ObjDBCommand.AvtiveConnection=objDBConn; Step3:指定 CommandText 属性为要执行的 SQL 指令,程序代码如下: ObjDBCommand.CommandText=“Select * from userlist”; Step4:使用 Execute 方法执行 SQL 指令, objRS 就是取得的记录集合,代码如下: Set objRS=objDBCommand.Execute; 上述步骤可以取得所有注册会员的详细注册资料,至于添加、删除和更新记录只需下达不同的 SQL 指令。需要注意的是, Command 对象并不支持 Close 方法,所以关闭 Command 对象,只需设为 Nothing 即可。 建立复杂的 SQL 语句,通常得事先进行许多复杂的数据类型转换,使用 Command 对象配合 Parameters 数据集合建立 SQL 指令则相对来说比较简单,因为对象本身就能够自已处理复杂的数据类型转换,另外,比较 Connection 对象直接执行 SQL 语句来说,操作要灵活。 Command 对象主要的目的是用在存储程序( Store Procedure),简单地说,存储程序是一些默认的处理程序。这个部分需用要数据源本身拥有指令处理的能力,象 MS SQL Server 就支持存储程序,但 MS Access 这类中小型数据库系统就不支持存储程序。 应该说,使用存储程序来操作数据库,具有较其它方式 较明显的优点,首先,数据存取效率最高,因为存储过程经过了优化和编译,并且在第一次执行以后,就驻留在缓存中,另外,用户不必在网络上发送有时数以百计的 SQL 语句,只需通过执行一个简单的存储过程,就能够完成复杂的操作,减少了客户和 DB 服务器间传递的请求数目,减少了网络通信量。 设计开发的 BBS 论坛采用 MS Access 数据库,所以本方法作为未来系统扩展升级时数据库操作的首选方法。 3、使用 ADO 组件的 RecordSet RecordSet 对象为 ADO 组件最重要的对象,从英文名字看来就是 “记录集合 ”。它将表全部或部 分的记录内容,象使用容器一样暂放所需的记录, RecordSet 对象能够显示表的内容或进行记录数据的分析处理。 数据的目的是在访问、建立和处理记录,表的内容是由记录所组成。当在表中查询所需的数据时,其实就是在表的记录间寻找, RecordSet 对象的记录集合可以把所需的记录取出,使用表格的方式,每一行就是一条记录,提供 ASP 程序一致的数据处理方式。 数据本身其实就是一个虚拟的表格,为什么一定要将它取出放入 RecordSet 对象容器,然后再进行处理呢?这是因为 ADO 组件数据源不见得就是数据库表,它可能是一个文本文 件,而且所需的数据可能只有几笔,并不需要打开整个表提供全部的记录。直接在表中处理并没有效率,不如在 RecordSet 记录集合处理后,再更新表的记录,反而较有效率。 总之,不论数据源到底是什么,通过 RecordSet 对象的记录集合,就可以在 ASP 程序使用一致的方法处理数据,不论是文本文件、 Excel 还是数据库,它都是一个表格的记录集合。 在使用 ADO 组件的 RecordSet 对象时,因为处理的对象是记录集合,不是表的记录本身,所以,如果记录改变了,一定在用 Update 方法更新表,才能真正修改表的记录内容。 在数 据的查询方面, RecordSet 对象的使用相当灵活,虽然 RecordSet 对象一样可以插入、更新和删除记录,此时直接使用 SQL 指令反而较有效率。例如:只是插入一条记录,为什么需要建立 RecordSet 对象的记录集合,然后再更新记录?这在实际操作时,反而多此一举。但是,如果是从表中提取记录集合,然后要对记录进行相对较为复杂的分组分页显示,则使用 RecordSet 对象来操作数据比起 SQL 方式来要简单得多。论坛中象会员列表查询或是版主列表查询都采用 ADO 组件的 RecordSet 数据操作方式。 5 4 ASP网页安 全性的实现方法 在用浏览器浏览 HTML 网页时,浏览器会将 HTML 文件原封不动地全部下载下来,然后再由浏览器解释执行,因而很容易就能看到 HTML 文件的全部源代码,这对于那些含有保密内容的网页来说是十分不安全的。为了提高网页的安全性,采用了 ASP 网页,前面说过, ASP 网页是一种动态网页,它是由服务器中的 ASP 程序运行产生的动态页面,而 ASP 的源代码又是全部保存在服务器上的,所以从客户端的角度, ASP 源代码是保密的。所以,可以利用 ASP 网页 ASP 源代码的保密性来实现 ASP 网页只能被具有相应权限的合法用户访问。 本 BBS 论坛系统有会员身份权限限制的功能网页相当多,频繁地要求用户输入用户名以及密码,然后比较数据库中会员注册表数据以确认用户身份,再根据用户的身份来确定是否具有本网页的访问权,将会消耗大量的服务器资源,极大地增加 Web 服务器的负担。此时,可以利用 ASP 的内置对象 Session。 当一位尚未建立 Session 对象的用户浏览到 WEB 站点的 ASP 程序时, ASP 就会自动产生一个新的 Session 对象,并且指定唯一的 SessionID 编号。此后,在浏览此 ASP 程序和即将在站点内浏览其它 ASP 程序的过程,称为一个 Session 期间。 WEB 服务器可以凭借读取 ASP 程序时传送的 SessionID 判断用户是否仍在 Session 期间,直到 Session 对象 TimeOut 属性所设置的时间,默认为 20 分钟或执行 Abandon 方法。每当读取新的 ASP 程序后, TimeOut 属性都会归零,重新计算,所以除非没有浏览站点,否则 Session 期间绝对超过 20 分钟。 每一位用户都可以拥有一组专用的 Session 变量。虽然每位用户的 Session 变量名称相同,但是其内容可就不同,而且只有该用户拥有权利读写自已的 Session 变量,可以利用 Session 的这个特性来实现 ASP 网页的安全保护。 在论坛设计了一个 ASP 网页 userlog.asp,如果用户想以普通会员的身份发表贴子,或以版主身份管理版面,或以超级管理员身份进行论坛管理,则用户在进入系统之前必须通过 userlogin.asp 进行登录, login.asp 会将用户输入的用户名及密码拿来与数据库中的资料相对比,以确定用户的合适身份,否则,用户只能以匿名用户身份浏览本论坛贴子,却不能发表贴子或回复贴子,当然更不能进行论坛的相关管理操作了。用户的身份将被写入 Session 对象的 username 以及 adminboard 变量, username 保存其会员名称, adminboard 保存其操作权限,为 “0”则其为超级会员,为空则为普通会员, 1 为版面 ID 则为版主。 userlog.asp 部分核心源代码如下: % Write Log objRS.close strSQL=INSERT INTO loginfo(userid,userip,intime) strSQL=strSQL & VALUES( & strUserName & , strSQL=strSQL & request.servervariables(remote_host) & , strSQL=strSQL & now() & ) set objRS=objDBConn.execute(strSQL) if err.number0 then response.write 数据库操作失败: &err.description end if end if objRS.close objDBConn.Close Set objRS=Nothing Set objDBConn=Nothing % 确定了用户的会员身份以后,在每个需要进行身份识别的 ASP 网页插入身份识别代码,如果此用户具有访问这个 ASP 网页的权限,则输出其相应的 HTML 文件,否则,系统转到用户登录网页要求用户重新登录以取得访问此 ASP 功能网页的合法身份。例如,论坛基本信息设置 ASP 网页需要访问者具有超级会员身份,在本网页前必须插入以下一段代码: % Check the Super Administrator Right Response.Expires=0 if Session(adminboard) 0 Then Response.redirect userlog.asp?errmsg=您没有超级用户管理权限,请重新登录或退出 ! End If % 5 5 在贴子中实现超文本信息输入和显示 论坛可以由管理员设置是否支持 UBB 标签, UBB 标签就是不允许使用 HTML 语法的情况下,通过论坛的特殊转换程序,以至可以支持少量常用的、无危害性的 HTML 效果显示。而对于那类带有恶意代码的文本予以屏蔽。下面为设计开发的 BBS 论坛支持的 UBB 具体使用说明: B文字 /B:在文字的位置可以任意加入您需要的字符,显示为粗体效果明。 I文字 /I:在文字的位置可以任意加入您需要的字符,显示为斜体效果。 U文字 /U:在文字的位置可以任意加入您需要的字符,显示为下划线效果。 URLHTTP://URL 。 EMAILsch_/EMAIL 。 img/img:在标签的中间插入图 片地址可以实现插图效果。 flashFlash 连接地址 /Flash:在标签的中间插入 Flash 图片地址可以实现插入 Flash。 code文字 /code:在标签中写入文字可实现 html 中编号效果。 quote引用 /quote:在标签的中间插入文字可以实现 HTMl 中引用文字效果。 list文字 /list list=a文字 /list list=1文字 /list:更改 list 属性标签,实现 HTML 目录效果。 fly文字 /fly:在标签的中间插入文字可以实 现文字飞翔效果,类似跑马灯。 move文字 /move:在标签的中间插入文字可以实现文字移动效果,为来回飘动。 color=颜色代码 文字 /color:输入您的颜色代码,在标签的中间插入文字可以实现文字颜色改变。 size=数字 文字 /size:输入您的字体大小,在标签的中间插入文字可以实现文字大小改变。 face=字体 文字 /face:输入您需要的字体,在标签的中间插入文字可以实现文字字体转换。 DIR=500,350http:/DIR:为插入 shockwave 格式文 件,中间的数字为宽度和长度。 RM=500,350http:/RM:为插入 realplayer 格式的 rm 文件,中间的数字为宽度和长度 。 MP=500,350http:/MP:为插入为 midia player 格式的文件,中间的数字为宽度和长度 。 QT=500,350http:/QT:为插入为 Quick time 格式的文件,中间的数字为宽度和长度 。 URL=HTTP:/网易 /URL:有两种方法可以加入超级连接,可以连接具体地址或者文字连接 。 align=center文字 /align:在文字的位置可以任意加入您需要的字符, center 位置 center 表示居中,left 表示居左, right 表示居右。 EMAIL=MAILTO:sch_feng/EMAIL:有两种方法可以加入邮件连接,可以连接具体地址或者文字连接。 glow=255,red,2文字 /glow:在标签的中间插入文字可以实现文字发光特效 ,glow 内属性依次为宽度、颜色和边界大小。 shadow=255,red,2文字 /shadow:在标签的中间插入文字可以实现文字阴影特效, shadow 内属性依次为宽度、颜色和边界大小。 1、超文本信息的输入 用户在书写贴子内容时,可以输入这类带格式文本,例如,用户希望输入一段红色文字 “警告:大家注意了,我在灌水 ”,则应照这种格式输入文本 “color=red警告:大家注意了,我在灌水 /color”。系统在用户输入贴子界面应提供 UBB 使用帮助链接,对于一些常用的 UBB 标签,系统应提供其快捷输入方式。例如,界面提供一个输入飞行文字 UBB 标签快捷按钮,用户单击此按钮,系统则弹出一个文本输入框 ,用户在其中输入文字,完成提交后,系统将自动在贴子内容输入滚动文本框内文字的末尾添加带有飞行文本标签的这段文字。其实现代码如下(采用 JavaScript 编写): function fontchuli() if (document.selection)&(document.selection.type = Text) var range = document.selection.createRange(); var ch_text=range.text; range.text = fontbegin + ch_text + fontend; else document.kbbs.body.value=fontbegin+document.kbbs.body.value+fontend; document.kbbs.body.focus(); function fly() fontbegin=fly; fontend=/fly; fontchuli(); 功能按钮: 文本在提交后,系统在保存此贴子之前,应该将提交的贴子的标题、贴子内容作适当的转换,比如,用户输入的 等字符,应该转换成 HTML 非保留字符。采用 Server 对象的 HTMLEncode 方法。 假设贴子的标题以及内容分别被存放在 title 以及 body 这两个变量里,转换代码如下: title=Server.HTMLEncode(title) body=Server.HTMLEncode(body) 2、超文本信息的显示 保存在数据库贴子数据表中的相关贴子标题以及内容的数据,是经过了 HTMLEncode 方法处理过的数据,而且数据中包含了大量的 UBB 标签,在显示贴子之前,应该将那些 UBB 标签作适当转换,以使用户浏览器能对其进行正确解释。 RegExp 提供简单的正则表达式支持功能,它包括一系列的属性和方法,用于从一段文本中进行正则表 达式模式匹配,找出或用一段文字替代与之相匹配的文本。 在 VBScript 对象包含三个属性以及支持三个方法,下面分别说明如下: I、 Global 属性 设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。使用语法: object.Global = True | False , object 参数总是 RegExp 对象。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 True。 II、 IgnoreCase 属性 设置或返 回一个 Boolean 值,指明模式搜索是否区分大小写。使用语法: object.IgnoreCase = True | False 。 object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 True。 III、 Pattern 属性 这是正则表达式对象最重要的一个属性,设置或返回被搜索的正则表达式模式。使用语法: object.Pattern = searchstring。正则表达式对象将根据其正则表达式进行相应的模 式匹配。 VI、 Replace 方法 替换在正则表达式查找中找到的文本。使用语法为: object.Replace(string1, string2)。 Replace 方法的语法包含以下几个部分: object 是必需,总是一个 RegExp 对象的名称; string1 是必需的, string1 是将要进行文本替换的字符串; string2 是必需的, string2 是替换文本字符串。被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。 Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将返回原来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论