毕业设计PHP论坛网站程序设计.doc_第1页
毕业设计PHP论坛网站程序设计.doc_第2页
毕业设计PHP论坛网站程序设计.doc_第3页
毕业设计PHP论坛网站程序设计.doc_第4页
毕业设计PHP论坛网站程序设计.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

装订线安徽工业大学 毕业设计(论文)说明书安徽工业大学毕业设计(论文)任务书课题名称程序设计论坛网站的设计与实现学 院 计算机专业班级网络工程062姓 名学 号069074273毕业设计(论文)的主要内容及要求:1、 认真复习软件工程、数据库、计算机网络等相关知识。2、 学习和熟悉php动态网页设计技术。3、 按照软件工程的要求,对程序设计论坛网站进行详细的需求分析,在此基础上,进行功能设计、界面设计,最后编码调试实现。要求能够实现用户在线浏览论坛帖子,分主题发表帖子和回复等功能。4、 完成毕业论文的撰写、修改和定稿。摘 要现在互联网已经成为人们快速获取、发布和传递信息的重要渠道,论坛是internet上最常用的交流工具之一,越来越多的人开始把论坛作为他们获取信息的手段和交流的平台。本毕业设计就是基于php+mysql的论坛设计,以php expert editor作为开发基础,采用wamp架构,辅用css技术,并通过使用模板技术,在apache本地服务器上实现了较完整的论坛功能。php语言执行效率高并易于同数据库连接,mysql数据库访问速度快、稳定性好。该论坛主要用来为用户提供一个计算机程序语言的交流环境,学习资料的共享,各类计算机程序技术的讨论,问题的求助都可以在论坛上发布,该论坛主要包括前台和后台两大部分,前台主要实现用户管理和帖子管理,前者包括用户注册、用户登录、用户密码找回、用户信息修改等;后者包括包括帖子内容显示、帖子发布和回复信息等。后台主要实现管理员对论坛系统的维护。关键词:论坛;php;apache;mysql;模板 abstractnowadays the internet has become an important channel for people to gain , publish and transfer information on the internet, bbs is one of the most common communication tools, more and more people make bbs as the platform to obtain information and communicate with each other. this design is based on the bbs+mysql,using php expert editor as exploited foundation, adopting wamp architecture,complementary with css technique and through the use of template techonolgy, it realized almost completely bbs functions in apache local server. the efficiency of php language implementation is high and it is easy to connect with mysql database access which is fast speed and good stability. this bbs is mainly used to provide users a computer programming language enviroment to exchange,share information and all kinds of discussion about computer program technology and questions can post on the bbs. this bbs includes two parts:forestage and backstage.forestage is mainly used to realise user mangement, including the user registration, user login,user password retrieved and user information modification etc. backstage mainly realizes the bbs system administrator for maintenance. keywords:bbs;php;apache;mysql;template目录1 绪论11.1课题的研究意义11.2课题的研究现状11.3论文的研究内容11.4 系统的设计思路22 理论基础32.1 wamp架构介绍32.1.1 wamp架构的提出32.1.2 wamp架构的优势32.1.3 wamp架构的研究现状32.2 php技术32.2.1 php技术概述32.2.2 php技术特点42.3 mysql数据库技术52.3.1 mysql数据库概述52.3.2 mysql图形管理工具-phpmyadmin62.4论坛采用b/s架构73 总体设计83.1论坛可行性分析83.2 论坛需求分析83.3 功能模块的设计113.4 论坛系统数据库的设计策略133.4.1 概念结构设计133.4.2 逻辑结构设计154 论坛系统详细设计214.1 数据库的访问214.2 css样式表的使用224.3 论坛系统功能的实现224.3.1系统功能224.3.2普通用户功能234.3.3版主功能274.3.4管理员功能294.4 数据的安全性研究与实现304.4.1 论坛系统的安全体系304.4.2 论坛系统安全性的实现315 论坛系统性能优化325.1 论坛系统测试325.2模板技术在论坛中的应用336 结束语36致谢37第 iv 页1 绪论1.1课题的研究意义随着我国改革的深入和发展,公共传媒的发展也日新月异。人们己经不单单只从电视、报纸上得到需要的新闻报道,internet传播介质的出现使得人们能够从更加丰富的网络资源中得到自己想要的信息。论坛是internet上最常用的交流工具之一,越来越多的人开始把论坛作为他们获取信息的手段和交流的平台。论坛系统已经成为互联网上人与人之间交互的必备工具,特别是做网站必备。以前我们一直使用留言本形式。论坛与留言薄的区别在于论坛上的消息是分层次的。每个人都可以在论坛上发表信息,别人可以回复这条消息。回复消息与被回复消息之间存在一种“父子”关系。如果将最上层的消息当作“根消息”,则每一条子消息都有一个唯一的“父”消息。因此,论坛用做发表意见的场合是最合适的,因为可以从中看到不同消息之间的关系,访问者不至于在浏览时因为头绪太乱而迷失方向。由于论坛系统的论坛作为人们日常生活获取信息的手段和交流的平台,因此本文研究论坛系统的开发具有重要的实践意义。1.2课题的研究现状随着互联网技术的发展,现在的论坛系统功能越来越多,不但可以发帖回帖,还可以上传视频和提供下载等等。有的论坛系统为了达到更好的用户体验,在实现了基本的讨论功能后,设计了很多个性化的功能,比如在论坛中设置了“个人空间”、“加为好友”等功能,还有的论坛系统,通过提供免费的空间来增加论坛的发帖量。当然有些论坛系统的个性化功能设计新颖,也非常有使用价值,但有些个性化功能的设计却既没有多少使用价值,同时又大大的影响了系统的性能。以目前许多学生自主创办的论坛为例,都因盲目重视功能,忽略了性能,系统运行一段时间后都因性能问题不得不更换其他论坛系统,每更换一次,论坛的数据就全部丢失。由此可见,实现一个论坛系统如果只重视功能而忽略性能,破坏的影响是非常严重的。经过对一些目前国内外比较典型的bbs论坛系统的设计和实现方式的分析,本文认为去掉系统不必要的个性化功能,实现一个性能好、速度快、安全性高并且基本功能完善的论坛系统是很必要的。1.3论文的研究内容论文的主要研究内容是根据目前聊天工具的现状和需求,设计出一个具备交互、执行下载数据或程序、上传数据、阅读、与其它用户交换消息等功能,并在实际应用中予以实现和评价。具体的研究内容如下:对论坛系统目前的国内外发展现状进行对比分析,找出交流系统存在的问题,提出相关的解决策略。结合解决策略,设计新的适合时代特点的论坛系统,并对照原有的传统的交流工具分析论坛的特点和适应性,完成论坛的系统实现。1.4 系统的设计思路系统将采用软件工程的生命周期过程来进行分析设计。其基本思路:首先,是进行系统可行性分析和系统的初步设计规划。其次进行需求调研,主要通过对国内外各种大型论坛进行亲身体验、现有开源论坛系统的研究及进行网上调查与提问等方式得到需求,在此基础上进行需求分析以确定需求是否值得设计开发,完成业务逻辑分析与设计,确定系统的功能模块等。接着准确地进行数据库设计、界面设计以实现系统所要达到的规划目标。最后进行系统布署与测试,以改进系统性能。2 理论基础2.1 wamp架构介绍2.1.1 wamp架构的提出1998年,michael kunze为德国计算机杂志写了一篇关于free 软件如何成为商业软件替代品的文章,创建了lamp这个名词,linux 操作系统、apache网络服务器、mysql数据库和php(perl或python)脚本语言组合而成的 lamp (四种技术的开头字母组成),随之lamp技术成为了开源软件业的一盏真正的明灯。随着互联网开源潮流的迅速发展,全球it业正迎来一个新的发展格局成长期,而lamp所代表的开源软件以其开放性、低成本、安全性、适用性以及可靠的性能,正对传统软件、硬件和系统集成商产生巨大的冲击,同时,也给创新型it企业、程序开发者创造了前所未有的机遇。中国开源软件推进联盟主席陆首群说,lamp也可以派生出wamp(w代表windows操作系统)。事实上,php与.net是并存的,php也可以和windows捆绑在一起,两者并没有冲突,可以因地致宜地使用开源与闭源混合架构。本系统就是采用wamp架构进行论坛程序的设计与实现。2.1.2 wamp架构的优势wamp架构易于开发、安全性高、适用性强、性能可靠、更新速度快、成本低,wamp被许多开发者视为“黄金组合”。由于apache是免费的,此外还有免费数据库mysql服务器和开源语言php共同构建了广受追捧的“wamp(lamp)”套件,性价比极高,因此赢得了网站开发人员的广泛青睐。2.1.3 wamp架构的研究现状在今天,全球已有2000万个网站使用php,包括最流行的雅虎、google、百度,也包括像汉莎航空电子订票系统、德意志银行的网上银行、华尔街在线的金融信息发布系统,甚至军队系统这类五花八门和苛刻的环境。随着社区bbs及web2.0应用的普及,以及国内php技术支持者的不断增加,据phpchina资料统计在中国前200名的网站中有61%的采用了wamp技术。业内人士预计,在服务器平台及软件方面,wamp市场占有率将在未来两年内取得更高的市场分额。2.2 php技术2.2.1 php技术概述php全称为personal home page,是一种跨平台的服务器端脚本技术。于1995年开始发行使用,到1998年成为一个成熟的软件产品。它最初是一个人为了写他的主页而用perl写的“包装”程序,后来因为用的人多了,就发展了起来。现在php已经成为最流行的web脚本语言之一,它运行在web服务器端,根据用户请求或服务器端的数据产生动态网页。它功能强大,和html脚本融合在一起,并内建访问数据库的能力。它能够作为apache web服务器的模块执行,也使得它的执行效率要高于普通的cgi程序。php是编程语言和应用程序服务器的结合,php和其它的编程语言类似,使用变量存储临时数值,使用操作符处理变量。php的真正价值在于它是一个应用程序服务器,应用程序服务器是指一个把几个不同的技术组合为一个完整的套件的程序,这些技术包括:一个强壮的编程语言;存取数据库中存储的数据;支持internet协议,尤其是电子邮件和http协议。php大量借用了c、java、和perl语言的语法,并加入了各种php自己的特征,使web开发者能够写出快速的动态页面。php是一种跨平台的服务器端嵌入式脚本技术。php页面是一种文本文件,是在普通html页面文件中嵌入php脚本语句,由服务器解释和翻译成普通的html文件,然后传送给客户端浏览器,这一点和asp一样。php脚本语句段以“”为结束。“”之间的脚本语句由服务器软件调用php脚本解释引擎解释后替换为普通的html脚本。php语法和c、perl的语法很相似,并主要来源于c语言,如控制流语句与c几乎完全一样、变量之间的运算符与c的类似、函数定义和调用与c的类似等。php的变量名前面必须有一个$号,如$var1、$var2。php的变量作用域规定也类似于c,即缺省认为主函数中的变量是全局变量,而函数中的变量都是局部变量。在php中,echo和printf函数用来向html页面中输出html内容,其中echo输出无格式字符串,printf输出格式化的字符串。如echo(welcome you to come here)和printf(%s,%d,str1,int1)。2.2.2 php技术特点现在通常用的服务器端脚本技术是cgi。现有的web后台程序,绝大多数采用下列几种技术编写:perl或采用第三方解决方案(如asp),虽然每类方案都有各自的强项,但均不是理想的解决办法。perl编写cgi是使用得最多的方法,在网络上也有很多现成的脚本可以拿来修改使用,但它却存在公认的性能问题:由于web服务器运行时需调用解释程序解析代码,当站点的访问人数激增时,web服务器的性能也必将直线下降,另外则是它的数据库连接功能非常弱,某些情况下甚至还会降低数据库的存取速度。第三方厂商提出了较好的解决方案:如microsoft的activeserverpage。它具有运行速度快,数据库操作功能强大等特性,受到了许多开发者的欢迎,但它们只能单纯地运行于个别平台(nt),对要求更高回应率的网站来说(大多数大中型网站均建于unix或linux平台,apache系列web服务器)还是不能顺利采用(注:目前已有人提出这两种技术在unix系列平台上应用的方案,但要么是不具备源技术的全部优秀功能,要么就是只能应用于个别unix平台)。1997年,php开发小组在原php/fi2.0的基础上,开发出了全新的php3,免费让所有人使用和(或)更改解释器源代码。相对于传统的cgi语言,php拥有下列超群的特性:(1)易学易用:php的语法结构大部分借用了c、java、perl的好的语法框架,有以上编程经验的开发人员可快速地掌握投入实际使用。(2)运行速度快:php采用html内置标记技术,解释程序本身作为web服务器的一个模块运行,相当大地提高了运行时的解析速度。经测试表明,在web站点访问量非常大时,php的解析速度相当于传统cgi程序的4倍,非常适合大中型站点的应用。(3)跨多个平台:目前php可在windows、unix、linux的web服务器上正常运行,支持iis,apache等通用web服务器,用户更换平台时,无需变换php代码,可即拿即用。(4)效率高:和其它的解释性语言相比,php系统消耗较少的系统资源。当php作为apache web服务器的一部分时,运行代码不需要调用外部二进制程序,服务器解释脚本不需要承担任何额外负担。(5)开放源码:所有的php源码都可以得到。(6)没有运行费用:php是免费的。(7)基于服务器端:由于php是在web服务器端运行的,php程序可以很大、很复杂而不会降低客户端的运行速度。(8)嵌入html:因为php语言可以嵌入到html内部,所以php容易学习。(9)简单的语言:和java和c+不同,php语言坚持以基本语言为基础,然而它的功能也强大到足以支持任何类型的web站点。(10)极其强大的数据库支持:php最强大也最有代表性的特点在于它的数据库层,它内置了对很多数据库的支持,而不再需要特殊扩充,使得编写基于数据库的网页变得非常简单。目前所支持的数据库有oracle、sybase、filepro、msql、velocis、mysql、in-formix、solid、dbase、odbc、unix、dbm、postgresql、mssqlserver等。针对每个数据库都有一组函数用于数据库访问和操作,如对mysql有mysql_close、mysql_connect、mysql_create_db、mysql_db_query等函数。(11)文件存取:php有许多支持文件存取的函数。(12)文本处理:php有许多函数处理字符串,其中包括模式匹配的能力。(13)复杂的变量:php支持标量、数组、关联数组等变量,这给用户提供了以支持其它的高级数据结构的坚实基础。(14)图像处理:用户可以使用php动态地创建图像。2.3 mysql数据库技术2.3.1 mysql数据库概述mysql是一个小型关系型数据库管理系统,开发者为瑞典mysql ab公司。目前mysql被广泛地应用在internet上的中小型网站中。由于其体积小、速度快、总体成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体成本而选择了mysql作为网站数据库。mysql的特性:(1)核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活的为用户提供服务,而不用浪费过多的体统资源。(2)可运行在不同的平台上。(3)它有一个非常灵活且安全的权限和口令系统,当客户与一个服务器链接时,它们之间所有的口令传送被加密,而且它允许基于主机的认证。(4)它拥有一个非常快速的基于线程的内存分配系统,而且没有内存漏洞,所以可以不断地使用而不用担心其稳定性。事实上,它的稳定性足以应付一个超大规模的数据库,如跨国公司的处理流程。(5)php的强力支持。php中提供了一整套的mysql函数,用来对mysql进行支持。与其他的大型数据库例如oracle、db2、sql server等相比,mysql自有它的不足之处,如规模小、功能有限等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,mysql提供的功能已经绰绰有余,而且由于mysql是开放源码软件,因此可以大大降低总体成本。相对说来,mysql 内定最大连结数为 100 个使用者。但是,我们绝对不可以用一个程序的内建设定来判断它的效能。到目前为止,我们还没听说过使用 mysql 的较大而且访问频繁的网站上的用户有任何抱怨。2.3.2 mysql图形管理工具-phpmyadminmysql的标准操作全部是在字符界面下的,这样可能会让习惯图形界面的用户觉得不友好。因此出现了一些非命令行方式的管理mysql的工具。使用最多的mysql管理工具是phpmyadmin。phpmyadmin(简称pma)是一个用php编写的在网络上直观管理mysql数据库的软件,是众多mysql管理员和网站管理员的首选数据库维护工具,通过phpmyadmin可以完全对mysql数据库进行操作,例如建立、复制、删除数据等。phpmyadmin的主界面如图2.1所示。图2.1 phpmyadmin主界面2.4论坛采用b/s架构php采用浏览器/服务器(b/s)模式架构。所谓b/s结构,就是通过浏览器(browser)来访问服务器(server)上的内容,客户端不需要运行其他软件。b/s结果的优点是维护方便。客户端运行的软件是一个随操作系统同时发布的浏览器,例如ie,而不用安装其他软件。浏览器通过网络获取服务器的信息。b/s结构系统的所有的维护、升级工作都只在服务器上运行,服务器代码修改后,客户端就能获取最新的信息。服务器端的php代码会转化为html代码传输到客户端,一个基本的html代码如下所示: 标题 主题 在实际应用中,通常php代码和html代码混合使用以完成一个页面的显示。3 总体设计3.1论坛可行性分析可行性研究的目的是为了对问题进行研究,以最小的代价在最短的时间内确定问题是否可解,经过对项目进行详细调查研究,进而便能初拟系统规划报告,对系统开发中将要面临的问题及其解决方案进行初步设计及合理安排。下面简要对本系统开发的可行性加以论述:在经济可行性上,由于本系统是基于开源项目,在整个过程使用wamp架构,而且是免费的,同时在设计过程我参照了相关系统来设计,比如用asp论坛或jsp论坛。当然,系统也将按照软件工程的步骤来完成。在技术可行性上,系统将基于mvc架构,mvc 即视图,模型,控制器。 这种设计模式是一个很好系统开发的途径,我们可以为一个模型在运行同时建立和使用多个视图,这样就可以使系统在健壮性,代码重用和结构方面上一个新的台阶。除此之外,因为模型独立,这样就可以把一个模型独立地移植到新的平台工作。在社会可行性上,论坛在当今非常流行,很大一部分是归结于社会的发展:从互联网最终用户角度来讲,论坛的出现,大规模实现了使用者从实在的世界到网络虚礼的世界;从网站角度来看,所有网站设计出来就是要有人访问和交流。而论坛系统完全符合网站的要求。从这两个方面上可看出,本系统的开发和应用能给互联网带来新的交流工具与web应用,能促进网络的发展,因此具有很好的社会作用。从以上三点可以得知,开发此系统是可行的。3.2 论坛需求分析需求定义是对系统的术语描述,分析系统是否能实现,或者是否能提供更多的功能。我们应该从使用者的角度来分析和编写一个论坛系统,首先要确定论坛的功能是什么,也是用户想要的论坛提供哪些功能。我们在使用论坛的时是按照一定的流程来进行的,如:用户注册登入论坛,就一个或几个话题展开讨论,通过发帖功能来发布新的话题,通过回帖功能来回复已有的话题。管理员要管理论坛,具有的功能是创建、编辑、删除论坛的版块,管理注册的用户,管理帖子。这样的流程就决定了论坛所应具有的功能如图3.1所示。图 3.1流程图帖子类有浏览、发帖、回帖和管理四个方法,浏览方法又可分为列表和查看两个子方法,管理方法又可分为编辑、删除、置顶三个子方法。如图3.2所示,只有管理员可以管理帖子,一般用户没这个权限的。图3.2 帖子对象相关用例图用户类有注册、登入和管理三个方法,管理方法又可分为添加、删除和设置权限三个子方法。如图3.3所示,用户的信息和权限是由管理员来设置管理的。图3.3 用户对象相关用例图 这样,当初列出的功能列表就分别有了各自的归属对象。论坛一般存在两种用户,即注册用户和管理员。用户的权限是向下覆盖的,即上级权限包括下级的权限,在论坛中,管理员是上级权限。接下来,需要将不同类的对象及其方法分配给不同的论坛用户。与注册用户相关的功能,就是论坛的前台的主要功能。论坛系统的前台,是用户讨论问题的平台,发帖、浏览、回帖一直贯穿用户的前台活动。同时,由于论坛系统的帖子管理是管理员在浏览帖子时进行的,所以编辑帖子、删除帖子和置顶帖子等功能也安排在前台实现、其他与管理员相关的功能,包括版块管理、用户管理和设置都需要管理员在后台进行操作。通过以上的分析,论坛的基本功能就可以从众多需求中筛选出来。现在,让我们来看看哪些是基本功能。l 发帖。论坛最初是为了相互讨论话题而诞生的,发表帖子就是表达自己的看法,与他人进行讨论,因为发帖是论坛首要的功能。l 浏览帖子。发表了帖子,就要供他人浏览查看,使他人分享自己的想法和经验。l 回帖。浏览了他人发表帖子,就要发表自己的想法,参与讨论,就可以回复这帖子。发帖、浏览帖子和回帖的循环就构成了论坛,三大基本功能的相互关系如图3.4图3.4 论坛的基本功能3.3 功能模块的设计上一节中确定了论坛的整体需求和详细需求。但是只知道需求还是不行的,整体需求是对系统目标的一个模糊描述,经过分析后的详细需求是对系统中要实现功能的设计语言的转换表达,一个是由用户表达的,一个是由系统的编写者来分析表达的。但是这些需求的描述,无论多详细,都不能归纳成系统的相关模块,每个模块实际就是功能的合理组合。要实现一个系统,还需要从寻求分析上升到软件设计阶段。从上一节需求分析中得知,可以将功能分为前台和后台两类,因此模块也分为两大类:前台模块和后台模块。用户在前台的注册、登录、以及修改个人的注册信息组合成注册登录模块;用户浏览模块、浏览主题帖列表、查看帖子组合成浏览模块;用户发帖、回帖、编辑自己发布的帖子组合成发帖回帖模块;管理员编辑帖子、删除帖子和置顶帖子组合成管理帖子模块。以上四个模块组成前台的功能模块。后台模块都是与管理员相关的,设置论坛参数单独为后台设置模块;创建、修改和删除版块为管理版块模块;添加、删除和设置权限为管理用户模块。如图3.5所示是论坛的模块体系图。图 3.5 论坛的模块体系图所以对于注册用户,在论坛的行为可以归纳如下行为。l 注册个人身份,登录论坛,成功后可以修改自己的注册信息。这些行为只与用户自身相关,功能独立,设计成注册登录模块。l 浏览版块列表,选择某版块,显示其下的主题帖列表,查看帖子内容。这些行为是用户读取论坛的版块及其帖子的相关信息,设计成浏览模块。l 发表自己的帖子,回复已有的帖子,同时也可以编辑自己的帖子。这些行为是用户参与论坛讨论,发表自己见解的,设计为发帖回帖模块。对于管理员,需要负责整个论坛的正常运转,因此需要更多的管理功能,可以归纳如下行为。l 具备注册用户的功能,即管理员也是论坛用户。l 管理帖子。管理员对论坛的帖子有监督的权利,好的帖子要奖励,捣乱的帖子要删除,置顶帖子,这些行为都是针对帖子的操作,设计成管理帖子模块。l 管理版块。拥护注册成功后,需要管理员进行创建、管理版块信息,这些针对版块的操作,设计成管理版块模块。l 管理用户。用户注册成功后,需要管理员赋予权限,才能使用论坛的相关功能。同时,管理员可以自主添加、删除用户,这些针对用户信息的操作没,设计成管理用户模块。通过上面的分析我们可以得到用户的整体用例图,如图3.6所示:图3.6 用户整体用例图从用例图中,可以得到论坛的功能框架,即系统的各个部分已经确定,知道论坛是什么样子。3.4 论坛系统数据库的设计策略数据库是信息系统的核心,它具有对信息进行收集、组织、存储、加工、抽取和传播等功能。构筑数据库和盖房子奠基相似,数据库的设计直接关系系统的成败,因此要获得优秀的信息管理系统必须采用科学方法进行合理的数据库设计。本节就数据库的设计策略方面的内容作详细讨论。该论坛系统的数据库设计分为概念结构设计、逻辑结构设计。3.4.1 概念结构设计数据分析是数据库设计的第一步,包括下列内容:1、调查论坛系统需要实现的功能本论坛系统要实现以下功能:1)系统功能(指论坛程序自动实现的功能) 分论坛显示 主题显示 在线用户列表2)普通用户功能(论坛用户能够实现的功能) 登录和退出论坛用户需使用其在论坛中注册所得帐号和密码登录(未登录而直接进入论坛的用户称为访客,访客只能查看帖子,不具备其它功能) 用户注册 发文功能包括发帖子、回复帖子、修改删除自己发布的帖子 查询功能可查询注册用户及其对应的帖子 用户控制面板用户可在此处修改自己的个人资料,定制个性化的论坛功能3)版主功能(版主,也属于论坛用户的一种) 具有全部普通用户功能 版内文章管理,包括增删改查 取消或恢复用户在版内的发文权 重要主题前置功能4)管理员功能(论坛管理员能够实现的功能) 管理员具有普通用户和版主的所有功能 分论坛管理功能 论坛内的文章管理,包括增删改查 论坛用户管理,包括增删用户,指定版主等 帐号封杀列表2、编写数据流程图根据论坛系统的具体功能,编写数据流程模式图如图3.7所示。图3.7 数据流程模式图3、编写系统功能结构图系统功能结构图如图3.8所示。图3.8 系统功能结构图根据上述分析的结果,编制初步e-r图。它表示信息世界中的信息实体及其相互联系,初步e-r图如图3.9所示。图3.9 系统初步e-r图3.4.2 逻辑结构设计1、e-r图向关系数据模型转换定义一个关系模型是一个二维表r(a1,a2,an),其中r为关系名,ai为属性名。确切讲,一个关系模型对应一个数据库基表。逻辑结构设计首先是将基本e-r图向关系数据模型转换,转换的方法涉及深奥的专业理论,此处不作论述。最简单的转换可以将基本e-r图中的每个实体定义为一个关系模型,一个联系也是一个关系,从而得到关系模型。在模型转换中,最基本的要求是保证每个关系至少有一个码(key);关系中每个属性都是不可分的数据项,不允许表中有表;一个关系只是描述一个信息实体,或者实体间的一种联系。2、规范化规范化是数据库逻辑设计的指南和工具,它贯穿数据库设计过程中的数据分析、基本e-r图的设计和逻辑设计。特别在逻辑设计中,通过对关系模型r(a1,a2an)的函数依赖的进行模式分解,使模型达到bcnf、2nf、或3nf范式,可以消除更新异常等,当然有时为了提高查询速度,也可以牺牲规范化程度。论坛数据库分别包括10个表,如图3.10所示:图3.10 数据库表信息其中bans表记录着用户id,用户帐号,ip地址,email地址和显示给被封用户信息的信息等,主键为id。如图3.11所示: 图3.11 bans表表categories记录着版块id,版块名和位置信息,主键为id。如图3.12所示:图3.12 categories表表config记录着论坛配置选项名、配置选项值信息。如图3.13所示。如图3.13 config表表forums记录着论坛id号,论坛名,论坛描述,论坛版主,主题总数,最后回复时间,最后回复帖子的id,最后回复人的用户名和是否只允许管理员和版主访问等信息,其中id为主键。如图3.14所示。如图3.14 forums表表online记录着用户id,用户名称,用户上次访问的时间信息,主键为user_id。如图3.15所示。 图3.15 online表表posts记录着帖子id号,发帖人用户名,发帖人id号,发帖人ip,发帖人email,发帖内容,是否转换笑脸符号和发帖时间等信息,主键为id。如图3.16所示。图3.16 posts表表search_matches描述着匹配所涉及的帖子的id,匹配所涉及到的词和主题匹配信息。如图3.17所示。图3.17 search_matches表表search_results记录着查询结果id号,查询人用户名和查询数据的连续的php数组信息,主键为id。如图3.18所示。图3.18 表search_resultstopics记录着主题帖id号,发主题的用户名,主题题目,发主题的时间,最后回复时间,最后回复的id,最后回复的用户名,查看主题的次数,回复的帖数和是否设置置顶等信息,主键为id。如图3.19所示。图3.19 topics表表users记录着用户id,用户名,用户密码,用户email,用户等级头衔,真实姓名,用户个人网站,用户qq号码,用户msn号码,用户个性签名,用户所在时区,用户身份等信息,主键为id。如图3.20所示。图3.20 users表上述给出数据库中的表信息,本数据库包含封用户ip表、类别版块表、默认配置表、论坛表、在线用户表、帖子表、查询匹配表、查询结果表、主题表、用户表和数据库中各个表的列属性。4 论坛系统详细设计论坛在internet上是很常见的,但是要实现一个论坛,工作量很大。论坛系统大致可以分为两个组成部分:面向系统管理者的论坛管理系统和面向一般用户的论坛服务系统。无论是管理员方还是用户方都不必安装该系统。但是,为了解释网页代码中的服务器端脚本语言代码,服务器端必须安装相应的web服务器(比如apache,iis),脚本代码解释引擎(比如apache)和数据库服务器(如mysql)。系统管理员通过帐户密码验证后登录论坛管理系统,进行相应的后台管理如用户管理、版块管理和文章管理。而对于用户,则要先通过注册提出申请,经管理员审核后成为论坛系统的正式用户。用户通过帐户密码验证登录论坛服务系统后,能够在论坛内发表文章,回复文章,查询文章,浏览文章等。所以,论坛系统应该能够识别四类不同权限级别的用户。第一类是新注册用户,尚未通过系统管理员审核,拥有浏览文章,查询个体信息的权限;第二类是一般用户,已经通过审核,能够在论坛讨论区发表文章,回复文章,接收信件,回复信件;第三类是版主,能够在相应的版块删除文章,封锁id限制发文以及解除对一般用户的封锁;第四类是系统管理员,拥有最高权限,能够审核新用户注册请求,权限申请并执行相应的裁决。一般网站论坛需要实现的功能包括:数据库的访问,css样式表的使用,论坛系统功能的实现,数据的安全性研究与实现4个功能。4.1 数据库的访问无论是管理者还是用户,在操作论坛系统之前,首先要与数据库建立连接。掌握网络数据库编程方法也是该课题的主要目的之一。php语言提供了大量的数据库操作函数,对mysql进行了很好的支持。对mysql的访问,首先通过php的函数mysql_pconnect或mysql_connect建立对数据库服务器的连接,然后通过mysql_select_db函数从数据库服务器中选择本论坛系统的数据库,如果需要对数据库进行操作,可以用mysql_query函数向mysql数据库发送sql语句来实现,然后再通过mysql_fetch_row等函数来取回操作的结果。访问论坛系统数据库的功能实现如下:connect连接mysql;验证管理员用户名和密码;if正确do选择数据库。/不能连接数据库显示错误信息error(unable to select database. .mysql_error(), _line_, _file_);else/不能连接数据库服务器显示错误信息error(unable to connect to mysql server. .mysql_error(), _line_, _file_);4.2 css样式表的使用通过浏览互联网上的论坛,我们知道基本上所有的论坛系统都提供了很多的风格来实现更好的用户体验,用户可以根据喜好来选择自己喜欢的风格,这些风格的实现是通过css样式表来实现的。本论坛系统也提供了这样的功能,该论坛系统风格的css样式表部分代码如下:/*设置body的背景*/body background-color: #ffffff /*设置表格列的文字和颜色属性*/td font: 12px verdana, arial, helvetica, sans-serif;color: #333333/*设置输入框和复选框的字体和颜色*/input, select font: 12px verdana, arial, helvetica, sans-serif;color: #333333/*设置文本框字体和颜色*/textarea font: 12px verdana, arial, helvetica, sans-serif;color: #333333/*设置表单属性*/form margin: 0 4.3 论坛系统功能的实现4.3.1系统功能1、分论坛显示论坛系统版块和子论坛显示关功能如下:对数据表进行操作,使用select分别查询出所有类别版块表catagories和论坛表forums中的版块名称和子论坛名称,把类别版块表catagories和论坛表forums进行等值连接,使用while语句循环取出版块名和子论坛名,逐一输出版块和子论坛名称;论坛系统版块和子论坛显示如图4.1所示。图4.1 论坛系统版块和子论坛显示图2、主题显示主题显示主要功能实现如下:在主题表topics中查询主题id,使用while循环取出主题表中的主题名论坛系统主题显示如图4.2所示。图4.2 论坛系统主题显示图4.3.2普通用户功能1、登录和退出论坛登录论坛系统关功能实现如下:点击登录跳转到login.php登录处理页面,输入用户名密码后提交表单数据,对输入的用户名和密码进行去空格和转译操作使用unescape将字符进行转义,使用trim对所提交的字符进行去空格处理查询user表if有此用户 then do检查密码是否正确; if密码验证正确,显示登录成功返回主页面 else密码不符合,提示密码错误; end if系统登录界面如图4.3所示。图4.3 系统登录界面退出论坛系统功能实现:点击退出登录,从在线用户表中删除,使用where从在线用户表中选取用户,并使用delete语句删除,then重定向到主页index,php2、用户注册用户注册包括填写用户名、密码、邮箱。在注册前要检查该用户名是否已经被注册。密码插入数据库前要进行加密处理。点击注册转到register.php,调用user表,检查提交表单中用户名是否已经存在,如果不存在,将检查2次输入密码是否输入相同,以及检查提交邮箱格式是否正确,将注册信息保存至user表中。检查用户名是否存在:if 用户名已存在 then do 返回注册页面重新输入用户名; if 2次密码输入不一致 then do 返回注册页面重新输入密码;if 检查邮箱格式不正确 thendo 返回注册页面重新输入邮箱;else 注册成功将数据写入用户表;end if用户注册界面如图4.4所示。图4.4 用户注册界面3、发文功能根据课题内容参考的要求,发文功能包括发新帖子、回复帖子、修改删除自己发布的帖子。此功能是对论坛系统数据库表进行增、删、改的功能。发新帖子功能如下:如果是发表新帖子,点击发新主题,生成一个发表新主题的页面,将填写的内容提交,分别对topic表和post表操作,使用insert语句将新帖数据插入主题表topic,将主题帖子id,发帖人,发帖时间,帖子内容等信息insert进post表,改变主题帖中的最后回复last_post_id一项,使用update更新topic表的属性last_post_id,即最后发表主题名称,update更新用户表users的用户发帖数num_posts,和最后发帖时间发表新帖子及回复界面如图4.5、4.6所示。图4.5 发表新帖子界面图4.6 回复界面4、查询功能根据课题内容参考的要求,查询功能可查询注册用户及其对应的帖子。等值连接posts表和user表,查询注册用户可对本论坛系统的users表进行查询,posts表包括论坛系统所有的主题和回复内容。本论坛系统的查询功能可使用泛查找,通配符使用“*”,在对数据库进行查询前要先把“*”号转换成sql语句中的“%”。连接user表,posts和topics表,在user表中select该用户名,列出该用户的发帖信息。查询功能界面如图4.7所示。图4.7 查询功能界面5、用户控制面板用户控制面板是用户对个人资料进行添加、修改和删除的地方,可通过对users表的操作来完成此项功能。提交后使用update语句对user表更新。用户控制面板界面如图4.8所示。图4.8 用户控制面板界面4.3.3版主功能1、具有全部普通用户功能2、版内文章管理,包括增删改查本论坛系统在forums表中设置了moderators字段来记录论坛的版主名,版主登录系统后,在进入所管理的论坛前,先对版主身份进行检查,如果身份符合,则可享有和发帖用户一样的处理帖子的权利。版主版内文章管理界面如图4.9所示。图4.9 版主版内文章管理界面3、取消或恢复用户在版内的发文权取消或恢复用户在版内的发文权是通过在bans表中增加和删除用户来实现的,以添加禁止用户为例,功能实现如下:提交用户名thenif select user表,有该用户信息thendo insert插入bans表;else 提示没有此用户;添加禁止用户界面如图4.10所示。图4.10 添加禁止用户界面4、重要主题前置功能主题置顶功能实现如下:update更新主题表topics中的sticky一项,设置为1重要主题前置功能界面如图4.11所示。图4.11 重要主题前置功能界面4.3

温馨提示

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

评论

0/150

提交评论