毕业设计(论文)-基于PHP+MySQL技术BBS论坛设计.doc_第1页
毕业设计(论文)-基于PHP+MySQL技术BBS论坛设计.doc_第2页
毕业设计(论文)-基于PHP+MySQL技术BBS论坛设计.doc_第3页
毕业设计(论文)-基于PHP+MySQL技术BBS论坛设计.doc_第4页
毕业设计(论文)-基于PHP+MySQL技术BBS论坛设计.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

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

文档简介

*大学*届毕业论文1 引言随着internet技术的快速发展,人与人之间的交流方式逐渐增多。网络视频、网络聊天、博客已成为人们彼此沟通、交流信息的主要方式。此外,为了方便在某一专业领域探讨问题和发表意见,internet上还出现了在线论坛。在论坛上,人会根据自己的学识、经验发表意见或提出解决问题的方法。通过论坛系统可以随时获得各种最新信息;也可以通过论坛系统与别人讨论计算机软件、硬件、internet、多媒体、程序设计以及生物学、医学等各种有趣的话题;还可以利用论坛系统来发布征友、廉价转让、招聘人才、求职应聘等启事;更可以召集亲朋好友到聊天室内高谈阔论并且现在很多商务网站开始对论坛重视了起来,纷纷在自己的网站上开设论坛,作为与网民交流的空间,以此来吸引客户,服务客户。由此可见,论坛系统是一种非常必要的系统。在这个数字化时代,全世界有千千万万个网站昼夜不停地提供服务。php+mysql这一对web应用开发的利器,在从电子商务到网络办公,从邮件服务到大型综合网站的广泛应用,都显示了其强大的功能。目前网上的网页有静态网页和动态网页两种形式。静态网页不能自动更新,更新只能通过重新编写html页来实现,所以静态网页的制作和维护的工作量相当大。它的内容也不会因用户、浏览时间的变化而随之变化,所以实现人机交互有相当大的局限性,功能上有太多的限制。而动态网页的实现与静态网页不同,它由客户端向服务器提出申请,服务器根据用户请求,把动态网页内部的代码在服务器端进行相应的处理,再把结果发回客户端。因此,动态网页有以下特点:客户端看到的不是源文件,本身不用任何处理;不同用户、不同时间、不同地点浏览同一个网页返回的结果可以不同;动态网页只有经过用户浏览时才会返回一个完整的网页,而其本身并不是一个独立的网页文件;动态网页构建的网站维护起来比较容易,只需更新数据库内容即可。php本身就是一种编程语言,它是吸收了c、java等语言的综合优势而创建开发的一种新语言。这是它与jsp、asp的基本不同之处。php能够被apache、iis等多种服务器支持,而asp只能被windows系统下的iis、pws所支持。php能够很好的运行于linux、unix、windows、freebsd等多种操作系统上,asp只能运行于windows系统上,虽然jsp也能在多种系统下得到支持,但是必须以有java虚拟机为前提。2 系统分析2.1 需求分析bbs系统的目的提供的是一个交流平台,为广大爱好者提供交流经验,探讨问题的社区。因此,bbs最基本的功能首先是发表主题。其次是其他人员根据主题发表自己的看法。此外,为了记录主题的发表者和主题的回复者的信息,系统还需要提供用户注册和登录的功能。用户使用论坛有一定的流程:用户登录进入论坛(一般为游客,有时还要注册为会员),就某个话题(帖子的主题)展开讨论,通过发帖功能发布新的话题,通过回帖功能回复已有的话题,通过搜索功能查找已有的话题。管理员通过管理功能创建、编辑、删除论坛的版块,管理注册的用户,管理帖子等。只有注册的用户登录后才能发表和回复主题,浏览者(游客)只能浏览主题信息。根据用户的需求及上面的分析, bbs应该具备以下功能:显示各论坛类别及版面,查看版面下的所有根帖、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、发表帖子、回复帖子、进入后台、论坛类别管理、版面管理、用户管理和用户注册。2.2 可行性分析这里主要介绍技术可行性。该bbs的设计主要采用php、xml、mysql、dreamweaver 8、eclipse等技术和工具,整体设计采用软件工程的技术和方法,经过需求分析、总体设计、文档和代码的编制、模块测试和系统实现几个阶段。下面对这几种技术分别介绍。php技术php是一种服务器端、跨平台、html嵌入式的脚本语言。服务器端执行说明它是动态网页的一种,跨平台说明它可以同时运行在linux、unix或者windows上。另外还可以简单地嵌入到普通的html页中。php与asp、jsp相比,它有多种服务器支持,也支持运行在多种操作系统上,另外php本身就是一种面向对象的编程语言。它同时支持mysql、oracle、sybase、odbc等多种数据库。mysql 数据库mysql是当前最流行的开放源代码数据库,它具有跨平台,独立存储引擎、高级权限与安全系统、查询高速缓存、全文索引与检索等特性。mysql是一个高性能、多线程、多用户、建立在客户-服务器结构上的rdbms,专为速度和稳定性而设计。作为一个可靠的、富有特色的数据库系统,mysql已经在商业、教育、科学和工程领域得到应用。并且它的低成本/高性能的价值表现也吸引了更多用户。b/s三层结构在b/s系统中,用户可以通过浏览器向分布在网络上的服务器发出请求,b/s结构极大地简化了客户机的工作,客户机只要安装、配置少量的客户端软件即可,服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。在b/s三层体系结构下,表示层、功能层、数据层被割成三个相对独立的单元。第一层(表示层)web浏览器:在表示层中包含系统的显示逻辑,位于客户端。它的任务是由web浏览器向网络上的某一web服务器提出服务请求,web服务器对用户身份进行验证后通过http协议将数据传送给客户端,客户机接受传来的网页文件,并将其显示到web浏览器中。第二层(功能层)具有应用程序扩展功能的web服务器:在功能层中包含系统的事物的处理逻辑,位于服务器端。它的任务是接受用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,通过sql等方式向数据库服务器提出数据处理申请,等数据库服务器将处理结果提交给web服务器后,再由web服务器传回客户端。第三层(数据层):数据库服务器:在数据层中包含数据处理逻辑,位于数据库服务器端。它的任务是接受web对数据库操作的请求,实现对数据库查询、修改、更新等功能,把运行结果提交给web服务器。在b/s结构下,整个系统的管理、资源分配、数据库操作、业务逻辑部件的管理及动态加载等工作都集中于应用服务器。同时,由于工作集中,可以降低客户机的管理难度及客户机配置。仅仅提高应用服务器和数据库服务器的品质,就可以提高整个系统的运行效率,从而有效地降低了应用系统的部署与管理的难度。xml工作原理xml全称为可扩展的标志语言,类似于html语言。xml作为描述信息的语言保存数据,可以使用xsl或css来格式化这些数据,使之以某种形式显示在浏览器上。还可以通过解释器用编程的方法载入一个xml文档,再通过xml dom(xml文档对象模型)访问、更新、创建和操纵该xml文档的信息3 系统设计3.1 系统目标对于典型的数据库管理系统,尤其是对论坛这样数据流量特别大的网络管理系统、必须要满足使用方便、操作灵活等设计需求。本系统在设计时应满足一下几个目标: 采用人机对话的操作方式,界面设计美观友好,信息查看灵活方便、快捷准确。数据存储安全可靠。 全面展示系统内所有分类的帖子,并进行分别显示。 为用户提供一个方便快捷的主题信息查看功能。 实现在线发表帖子、回复帖子的功能。 提供登录模块,主要用于管理员登录系统和发表帖子时留下发表者的信息。 用户随时都可以查看自己发表的帖子。 对于用户输入的数据,要进行严格的检验,尽可能排除人为的错误。 系统最大限度的实现易维护性和易操作性。 系统运行稳定、安全可靠。3.2 系统功能模块设计按照论坛系统的功能可以将本系统分为前台和后台两大模块。用户在前台注册、登录,以及编辑个人的注册信息组成登录注册模块;用户浏览版块、浏览主题帖列表、查看帖子以及按条件搜索组成搜索模块;用户发帖、回帖组成发帖回帖模块;用户编辑、删除帖子组成编辑删除模块。以上四个模块是前台模块。后台模块都是与管理员相关的,其中管理员将管理选项、权限设置、删帖管理设置为版面管理模块;将备份数据库、配置选项、文字过滤、表情符号和恢复数据库设置为普通管理模块;将版面的整体风格设置为风格管理模块,有新建、添加、输出和管理几个方面;将封锁管理、禁用账号、权限设定和等级管理设置为会员管理模块。后台模块也分为四个。如图所示。论坛系统前台模块后台模块登录注册模块发帖回帖模块编辑删除模块搜索模块版面管理模块普通管理模块会员管理模块风格管理模块下面具体介绍各个模块的功能3.2.1 登录注册模块登录模块包括以下的几个部分。登录:一般网站都具有的功能,提供会员登录到论坛窗口的功能。注册:提供游客成为会员的功能,这样可以享受更多的权限。游客只能浏览帖子,而会员不仅可以浏览帖子,还可以回复和发表帖子。编辑会员信息:当注册的用户用其注册时使用的用户名和密码登录论坛系统后,可以对其注册时填写的资料进行编辑更改。3.2.2 发帖回帖模块包括以下几个部分。发帖:论坛的基本功能之一。会员可以就某个感兴趣的话题发表自己的看法,即发帖。回帖:论坛的基本功能之一。会员可以答复其他人提出的问题、看法等,即回帖。3.2.3 编辑删除模块包括:编辑,会员可以对自己发表过的帖子进行重新编辑修改;删除,会员当然可以删除自己发表的帖子。3.2.4 搜索模块包括:按关键字搜索,搜索功能的一种,按照帖子相关的内容关键字搜索;按作者名搜索,可以直接搜索其他某个会员发表的帖子。3.2.5 版面管理模块包括以下几个部分。管理选项:在管理选项中,管理员可以分别对版面和分区进行编辑。管理员可以对版面进行添加、编辑、删除和移动操作,还可以对分区进行添加、编辑、删除和移动操作。(一个论坛可以分成许多分区,一个分区又有许多版面,一个版面还可以分成许多主题。)权限设定:在权限设定中,管理员可以设置访问分区或版面的权限,权限有公开、注册会员、注册会员隐藏、非公开、非公开隐藏、长老、长老隐藏。删帖管理:在删帖管理中,管理员可以计划删除几天内没有得到回复的主题。(假设在10天内某个主题还没有回复,系统则自动删除此主题,管理员只需要设置天数就可以了。)3.2.6 普通管理模块包括以下几个部分。备份数据库:管理员可以对本系统的所有资料数据进行备份,以防数据的丢失。备份分完整备份、结构备份和数据备份。恢复数据库:在系统遭到攻击崩溃时,可以使用恢复数据库功能对系统的数据重新回复。文字过滤:在这个控制面板里管理员可以建立、编辑及删除过滤文字。这些指定的文字将会被过滤并以替换文字显示。另外会员也将无法使用含有这些被限定文字的名称来注册。配置选项:在这个控制面板里管理员可以对面板的基本内容进行设置,还可以进行cookies设置、会员设置和私人留言设置等。群体信件:在这个控制面板里管理员可以发送电子邮件给所有的会员。表情符号:这个控制面板中管理员可以对发帖、回帖时使用到的表情符号进行编辑或删除操作。3.2.7 会员管理模块包括以下几个部分。封锁管理:这个控制面板中管理员可以对会员的信息进行封锁,比如说可以封锁一个指定的会员,一个指定范围内的ip地址或计算机主机名称,这些方法禁止被封锁的会员进入论坛首页。也可以指定封锁电子邮件地址来防止注册会员使用不同的账号重复注册。管理选项:在这个控制面板中管理员可以变更会员的个人资料以及现存的特殊选项。禁用账号:在这个控制面板中管理员可以控制禁用会员的账号名称,但是已经注册的账号是无法禁用的。权限设定:在这个控制面板中管理员可以更改会员的权限设定及指定管理员资格。等级管理:在这个控制面板中管理员可以增加、编辑、浏览以及删除等级,也可以使用等级应用于会员管理功能。3.3 数据库设计数据库设计在项目开发中是非常重要的一个环节,它影响着后期的系统维护、变更和扩充,甚至在整个系统开发中,都会引起很大的问题。本论坛系统后台数据库采用的是mysql5.0,数据库名称为db-bbs,根据系统的功能需求,本系统设置了11张表,主要的几张表如下。1 phpbb_forums表该表保存了论坛的基本信息,如论坛编号、论坛名称、论坛说明、论坛帖子数等。如表1:表1:phpbb_forums表字段名类型长度允许为空是否主键描述forum_idsmallint5否是论坛编号cat_idmediumint8否否讨论区编号forum_namevarchar150是否版面名称forum_desctext/是否论坛说明forum_statustinyint4否否论坛状态forum_ordermediumint8否否论坛顺序forum_postsmediumint8否否论坛帖子数forum_topicsmediumint8否否论坛主题数forum_last_post_idmediumint8否否最后一个帖子号auth_viewtinyint2否否查看权限auth_readtinyint2否否阅读权限auth_posttinyint2否否发帖权限auth_replytinyint2否否回帖权限auth_edittinyint2否否编辑权限auth_deletetinyint2否否删除权限auth_stickytinyint2否否粘贴权限auth_votetinyint2否否投票权限auth_pollcreatetinyint2否否创建投票权限auth_attachmentstinyint2否否附件权限2 phpbb_topics表该表保存了论坛中主题的基本信息,如主题编号、主题名称、主题答复等。各字段信息如表2:表2:phpbb_topics表字段名类型长度允许为空是否主键描述topic_idmediumint8否否主题编号forum_idsmallint8否否论坛编号topic_titlechar60否否主题名称topic_postermediumint8否否主题帖子topic_timeint11否否主题发表时间topic_repliesmediumint8否否主题回复数topic_statustinyint3否否主题状态topic_votetinyint1否否是否投票topic_typetinyint3否否主题类型topic_first_post_idmediumint8否否主题首帖编号topic_last_post_idmediumint8否否主题末帖编号topic_moved_idmediumint8否否主题移动编号3 phpbb_users表该表保存了注册会员的基本信息,包括用户名、密码、e-mail等个人信息。各字段信息如表3:表3:phpbb_users表字段名类型长度允许空主键描述user_idmediumint8否是用户编号user_activetinyint11是否用户活动性user_namevarchar25否否用户名user_passwordvarchar32否否用户密码user_lastvisitint11否否用户上次登录user_regdateint11否否用户注册日期user_leveltinyint4是否用户等级user_postsmediumint8否否用户帖子数user_styletinyint4是否用户风格user_langvarchar255是否用户个性签名user_unread_privmsgsmallint5否否未读私密信件user_last_privmsgint11否否上一私密信件user_login_triessmallint5否否尝试登录次数user_emailtimeint11是否信件时间user_viewemailtinyint1是否查看邮件user_attachsigtinyint1是否附加个性签名user_allowsmiletinyint1是否允许加入表情user_allowavatartinyint1否否允许具体描述user_allow_pmtinyint1否否允许私有邮件user_notifytinyint1否否回帖通知user_notify_pmtinyint1否否私有邮件通知user_rankint11是否用户分类user_avatarvarchar100是否用户具体描述user_emailvarchar255是否用户emailuser_icqvarchar15是否用户iqcuser_websitevarchar100是否用户网站user_fromvarchar100是否用户来自user_sigtext/是否用户签名user_aimvarchar255是否用户现居地user_msnmvarchar255是否用户msnuser_interrestsvarchar255是否用户兴趣user_actkeyvarchar32是否用户职业4 phpbb_categories表该表保存了讨论区的基本信息,比如讨论区的编号、名称等。各字段信息具体如表4:表4:phpbb_categories表字段名类型长度允许为空是否主键描述cat_idmediumint8否是讨论区编号cat_titlevarchar100否否讨论区标题cat_ordermediumint8否否讨论去顺序5 phpbb_posts表该表保存了所有帖子的主要信息,包括帖子号、发帖者编号、发表时间等,如表5。表5:phpbb_posts表字段名类型长度允许为空是否主键描述post_idmediumint8否是帖子编号topic_idmediumint8否否主题编号forum_idsmallint5否否论坛编号poster_idmediumint8否否发帖者编号post_timeint11否否发表时间poster_ipchar8否否发帖者ipenable_smiliestinyint1否否允许使用表情enable_sigtinyint1否否允许使用签名post_edit_timeint11是否帖子编辑时间post_edit_countsmallint5否否帖子编辑次数6 phpbb_posts_text表该表保存了所有的帖子,包括发帖和回帖的名称和内容。各字段的具体内容如表6:表6:phpbb_post_text表字段名类型长度允许为空是否主键描述post_idmediumint8否是帖子编号post_subjectchar60是否帖子名称post_texttext/是否帖子内容7 phpbb_themes表该表保存了系统的显示风格设置,如背景颜色、文字样式、字体颜色等。各字段内容如表7:表7:phpbb_themes表字段名类型长度允许为空是否主键描述themes_idmediumint8否是主题编号style_namevarchar30否否风格名称body_backgroundvarchar100是否body背景图片 body_bgcolorvarchar6是否body背景色body_textvarchar6是否body文本body_linkvarchar6是否正常链接颜色body_vlinkvarchar6是否已点击链接色body_alinkvarchar6是否鼠标按下链接色body_hlinkvarchar6是否鼠标移过链接色tr_color1varchar6是否行颜色1tr_color2varchar6是否行颜色2tr_color3varchar6是否行颜色3th_color1varchar6是否表格头颜色1th_color2varchar6是否表格头颜色2th_color3varchar6是否表格头颜色3td_color1varchar6是否列颜色1td_color2varchar6是否列颜色2td_color3varchar6是否列颜色3fontsize1tinyint4是否字体大小1fontsize2tinyint4是否字体大小2fontsize3tinyint4是否字体大小3fontcolor1varchar6是否字体颜色1fontcolor2varchar6是否字体颜色2fontcolor3varchar6是否字体颜色34 系统的实现4.1 通用类实现为了使代码能够重复利用,实现代码的重用性,可以把一些常用的功能代码单独写在一个文件内,如连接数据库代码,头部和尾部文件等。在使用时可以用include关键字把这些代码包含到文件中,可以减少代码的重复。4.1.1 连接数据库文件文件db.php即为连接数据库的文件,该文件被放在includes目录下。代码如下:db_connect_id)message_die(critical_error, 不能连接数据库!);?以上代码执行的步骤如下所示:a) 应用“if(!defined(in_phpbb)”语句判断是否定义常量,如果没有定义则提示错误信息b) 应用“swith($dbms)”语句获取用户使用的数据库名称,不同的数据库包含不同的数据库操作文件c) 应用“$db=new sql_db($dbhost,$dbuser,$dbpassword,$dbname,false)” 语句建立一个数据库连接对象。d) 判断数据库是否连接成功,如果连接失败,则提示“不能连接数据库”。4.1.2 数据库操作类整个类的定义在mysql.php文件中,类的定义及其属性的定义如下所示:在以上代码中,首先判断是否定义常量,如果没有定义,则使用define()函数定义常量。然后,定义一个名为sql_db的类,也为该类定义了多个属性。同时,在sql_db类中定义多个方法,在其中定义了一个选择数据库的函数sql_db()。如下所示:/选择数据库function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)/设置属性的值$this-persistency = $persistency;$this-user = $sqluser;$this-password = $sqlpassword;$this-server = $sqlserver;$this-dbname = $database;if($this-persistency)/连接mysql服务器$this-db_connect_id = mysql_pconnect($this-server, $this-user, $this-password);else$this-db_connect_id = mysql_connect($this-server, $this-user, $this-password);if($this-db_connect_id)/判断数据库名是否为空if($database != )/获取数据库的名称$this-dbname = $database;/选择数据库$dbselect = mysql_select_db($this-dbname);/如果没有选择到数据库 if(!$dbselect)/关闭数据库mysql_close($this-db_connect_id);$this-db_connect_id = $dbselect;return $this-db_connect_id;elsereturn false;以上代码的执行的步骤如下所示:a) 设置使用的数据库、数据库服务器、用户名和密码的值等。b) 分别使用mysql_pconnect()函数和mysql_connect()函数连接mysql数据库服务器。其中,mysql_pconnect()函数用于打开一个到mysql服务器的持久连接,而mysql_connect()函数用于打开一个到mysql服务器的连接。c) 应用“$dbselect=mysql_select_db($this-dbname)”语句选择服务器上的数据库。d) 应用“if(!dbselect)”语句判断是否选择数据库,如果没有选择数据库,则调用mysql_close()函数关闭数据库连接。另外mysql.php中还定义了一个关闭数据库的函数,函数名为sql_close(),该函数的具体执行操作为:应用“if($this-db_connect_id)”语句判断是否连接了数据库服务器,如果连接了,则使用mysql_free_result()函数释放连接到服务器的所有空间。调用mysql_close()函数关闭数据库连接,如果关闭成功,则应用“return $result”语句返回关闭的结果,如果关闭失败,则返回false。以下代码定义了执行sql语句的函数,函数名为sql_query()。/sql语句执行函数function sql_query($query = , $transaction = false)/释放内存unset($this-query_result);/判断语句是否为空if($query != )$this-num_queries+;/获取执行结果$this-query_result = mysql_query($query, $this-db_connect_id);if($this-query_result)/如果存在查询结果,则释放内存unset($this-row$this-query_result);unset($this-rowset$this-query_result);/返回query_result执行结果return $this-query_result;elsereturn ( $transaction = end_transaction ) ? true : false;以上代码执行过程如下:应用“unset($this-query_result)”语句释放内存空间;应用“if($query != )”语句判断执行的字符串是否为空,如果不为空,则调用mysql_query函数执行sql语句。在mysql.php中还定义了一个获取数据集的行的函数,函数名为sql_numrows()。主要是通过应用“$query_id = $this-query_result;”语句获取执行sql语句的结果;根据执行sql语句的结果,调用mysql_num_rows()函数获取数据集的行。mysql.php中也定义了对数据字段操作的函数,如下:function sql_affectedrows()function sql_numfields($query_id = 0)function sql_fieldname($offset, $query_id = 0)function sql_fieldtype($offset, $query_id = 0)function sql_fetchrow($query_id = 0)以上各个函数的功能和该功能的具体实现如下所示:a) 在sql_affectedrows()函数中,主要通过mysql_affected_rows()函数获区前一次mysql操作所影响的记录行数。b) 在sql_numfields()函数中,主要通过mysql_num_fields()函数获取数据集中字段的数目。c) 在sql_fieldname()函数中,主要通过mysql_field_name()函数获取结果集中指定字段的字段名。d) 在sql_fieldtype()函数中,主要通过mysql_field_type()函数获得指定字段的类型。e) 在sql_fetchrow()函数中,主要通过mysql_fetch_array()函数从结果集中取得一行作为关联数组。另外,mysql.php中还有两个函数,sql_freeresult()函数和sql_error()函数,主要是用于释放变量空间和当程序对数据库操作出现错误时,提示出错信息。如下:function sql_freeresult($query_id = 0)function sql_error($query_id = 0)这两个函数的具体功能和该功能的具体实现方法为:在sql_freeresult()函数中,主要通过mysql_free_result()释放指定变量的空间,如果释放成功则返回为true,释放失败,则返回false;在sql_error()函数中,主要通过mysql_error()函数返回执行sql语句产生的错误信息。4.2 前台模块的实现4.2.1 论坛主页论坛首页自上而下可以分为3个部分,最上面的是导航部分,中间是论坛的主要部分即版块列表,最下面是用户及论坛的一些情况。如图1其中最上面和最下面的部分基本上是不会发生变化的,所以把它们做成公用的文件,然后使用包含语句将其包含到要使用的页面中。包含文件使用的include指令为图1首页使用include关键字包含了多个文件,分别是extension.inc、common.php和page_tail.php文件等。这些文件中:应用“$total_posts = get_db_stat(postcount);”语句获取总帖子数。应用“$total_users = get_db_stat(usercount);”来获取注册会员数。应用“$newest_userdata = get_db_stat(newestuser);”获取最新注册会员数。如果帖子总数为0,则显示示没有帖子。4.2.2 注册登录模块在用户注册模块主要由3部分组成,分别是注册信息、个人信息和选项,其中注册信息是必须填的,其它两项是可选项。在用户提交信息之后,系统要验证输入信息是否合法,具体包括必选项是否有空白、email格式是否正确、两次密码是否一致、用户名是否已经存在、email是否已经使用过等。这些信息的验证分别通过sql_query()函数(执行查询操作)、preg_match()函数(验证email格式是否合格)等。用户输入信息无误后,应用insert关键字,定义一个插入用户信息的字符串,通过执行插入语句,插入记录。用户登录时,通过应用$username = isset($http_post_varsusername)语句和 $password = isset($http_post_varspassword)语句来获得输入的用户名和密码,通过查询比较决定是否允许用户登录。用户更新信息是通过用户的id号查询到用户的信息,并且显示到文本框中,用户修改完成之后,再执行更新操作。找回密码,通过验证用户名和email是否为空,如果不空根据这两项通过调用sql_query()函数执行查寻用户信息操作。然后根据用户的id号定义更新用户密码的字符串,同时调用sql_query()函数执行更新操作。更新之后会应用“$emailer=new emailer($board_config smtp_delivery)”语句对emailer类进行实例化,再调用emailer类中的send()函数将用户的密码发送到用户填写的e-mail里。4.2.3 发帖回帖模块论坛最重要的部分就是帖子模块,发帖和回帖模块和用户注册有些类似,但可以看到用户发帖页面的功能很多,用户可以投票,可以选择头像,还可以进行文字格式的编辑等。(如图2)发表新帖首先进入到posting.php?mode=newtopic页面,其中mewtopic表示发送新的帖子,当填完发帖的内容后,单击发送按钮提交,提交处理仍为post.php文件,判断输入的数据是否合法,然后调用functions_post.php文件中的submit_post()函数进行处理。图2具体的执行步骤如下:a) 应用“$subject = htmlspecialchars()”语句获取发送新帖的主题,并且应用“if (!empty($subject)”语句判断获取帖子的主题是否为空。b) 应用if语句判断用户是发送新帖子还是编辑帖子,如果是发送新帖,则定义插入新帖的字符串;如果是编辑帖子,则根据帖子的id号,定义更新帖子的字符串c) 调用sql_query()函数执行插入发送新帖或更新帖子的字符串操作。d) 应用“if($mode = newtopic)”语句判断用户是否是发送新帖,如果是,则调用sql_nextid()函数获取上一步insert操作产生的id号。投票选项功能的添加、编辑和删除主要也是由submit_post()函数实现的。如果用户在发送新帖时添加了投票的功能,那么投票的选项必须大于2;编辑和帖子一样。通过调用sql_query()函数执行插入和更新投票的操作。其他用户进行投票时,通过调用sql_query()函数从数据库中查询出该投票的信息,并将查询结果保存到提前定义好的数组中。然后应用“if(!$db-sql_query($sql,begin_transaction)”语句判断该用户对此主题是否是第一次投票,如果是则更新数据库,如果是第二次,则提示用户“您已经投过票了!”。回复帖子界面和发送新帖的界面相比,只是少了一个添加投票功能,其他一样。回复帖子首先进入到posting.php?mode=reply页面,其中reply表示回复帖子。用户提交回复之后,提交处理文件仍然是post.php文件,判断输入的数据是否合法,然后调用functions_post.php文件中的以下语句对数据库进行插入操作。/回帖$sql = ($mode != editpost) ? insert into . posts_text_table . (post_id, post_subject, bbcode_uid, post_text) values ($post_id,$post_subject, $bbcode_uid, $post_message) : update . posts_text_table . set post_text = $post_message, bbcode_uid = $bbcode_uid, post_subject = $post_subject where post_id = $post_id;/判断是否执行成功if (!$db-sql_query($sql)/错误提示message_die(general_error, error in posting, , _line_, _file_, $sql);4.2.4 编辑删除帖子模块编辑帖子和发贴基本类似,主要调用了update_post_stats()函数,根据帖子的id号,定义更新帖子的字符串,然后执行。(如图3)删除帖子时首先进入到posting.php?mode=delete页面,当用户点击“是”确认删除帖子后,调用functions_post.php文件中的delete_post()函数进行删除操作。首先根据帖子的id号(post_id),定义删除帖子的字符串(将帖子的数码减1等),并调用sql_query()函数执行删除操作。图34.2.5 搜索帖子模块搜索包括论坛搜索、讨论区搜索、显示结果搜索等,如图4图4搜索页面通过include关键字包含了4个文件,分别是extension.inc、common.php、bbcode.php和functions_search.php文件。其中,在functions_search.php文件中,主要包含了用于搜索的多个函数。通过应用“$search_author = str_replace(*, %, trim($search_author)”语句获取查找字符串出现的位置;再用“if ( $search_author = & $auth_sql = )”语句判断搜索条件是否为空,如果为空则定义查找帖子的字符串,并调用sql_query()函数至此那个查询操作,同时将结果保存到$row数组中;最后获取帖子的id号,保存到$search_ids数组中,并调用sql_freeresult()函数释放内存空间。4.3 后台管理模块的实现后台管理的主要模块有:版面管理模块、普通管理模块和会员管理模块等。各个模块下又有不同的功能。4.3.1 版面管理版面管理下有三个功能:管理选项、权限管理和删帖管理。在论坛版面管理的管理选项中,可以添加一个新的分区,在分区中建立多个版面,同时还可以对添加的版面进行删除、修改操作。论坛管理员使用创建分区功能时,系统应用“if( trim($http_post_vars categoryname) = )”语句判断管理员输入的分区名称是否为空,不为空时定义查询最大分区id号的字符串,并将结果保存到$row数组中。同时将获取$row数组中最大的排序号,将其加10。然后定义插入分区的字符串,并调用sql_query()函数执行插入操作。创建新版面和创建新分区类似,系统应用“if( trim($http_post_vars forumname) = )”语句判断版面的名称是否为空,不为空时根据分区的id号查询版块最大的排序号,将其加10,再查询最大版块id号,将其加1。最后定义插入版块信息的字符串,同时调用sql

温馨提示

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

评论

0/150

提交评论