基于PHPMySQL技术BBS论坛设计的开发与实现.docx
《基于PHPMySQL技术BBS论坛设计的开发与实现.docx》由会员分享,可在线阅读,更多相关《基于PHPMySQL技术BBS论坛设计的开发与实现.docx(30页珍藏版)》请在冰豆网上搜索。
![基于PHPMySQL技术BBS论坛设计的开发与实现.docx](https://file1.bdocx.com/fileroot1/2023-3/28/4fc00f5e-a3c6-4e00-a16f-4d4cee54f616/4fc00f5e-a3c6-4e00-a16f-4d4cee54f6161.gif)
基于PHPMySQL技术BBS论坛设计的开发与实现
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、Dreamweaver8、Easyclipse等技术和工具,整体设计采用软件工程的技术和方法,经过需求分析、总体设计、文档和代码的编制、模块测试和系统实现几个阶段。
下面对这几种技术分别介绍。
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文档,再通过XMLDOM(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张表,主要的几张表如下。
1phpbb_forums表
该表保存了论坛的基本信息,如论坛编号、论坛名称、论坛说明、论坛帖子数等。
如表1:
表1:
phpbb_forums表
字段名
类型
长度
允许为空
是否主键
描述
forum_id
smallint
5
否
是
论坛编号
cat_id
mediumint
8
否
否
讨论区编号
forum_name
varchar
150
是
否
版面名称
forum_desc
text
/
是
否
论坛说明
forum_status
tinyint
4
否
否
论坛状态
forum_order
mediumint
8
否
否
论坛顺序
forum_posts
mediumint
8
否
否
论坛帖子数
forum_topics
mediumint
8
否
否
论坛主题数
forum_last_post_id
mediumint
8
否
否
最后一个帖子号
auth_view
tinyint
2
否
否
查看权限
auth_read
tinyint
2
否
否
阅读权限
auth_post
tinyint
2
否
否
发帖权限
auth_reply
tinyint
2
否
否
回帖权限
auth_edit
tinyint
2
否
否
编辑权限
auth_delete
tinyint
2
否
否
删除权限
auth_sticky
tinyint
2
否
否
粘贴权限
auth_vote
tinyint
2
否
否
投票权限
auth_pollcreate
tinyint
2
否
否
创建投票权限
auth_attachments
tinyint
2
否
否
附件权限
2phpbb_topics表
该表保存了论坛中主题的基本信息,如主题编号、主题名称、主题答复等。
各字段信息如表2:
表2:
phpbb_topics表
字段名
类型
长度
允许为空
是否主键
描述
topic_id
mediumint
8
否
否
主题编号
forum_id
smallint
8
否
否
论坛编号
topic_title
char
60
否
否
主题名称
topic_poster
mediumint
8
否
否
主题帖子
topic_time
int
11
否
否
主题发表时间
topic_replies
mediumint
8
否
否
主题回复数
topic_status
tinyint
3
否
否
主题状态
topic_vote
tinyint
1
否
否
是否投票
topic_type
tinyint
3
否
否
主题类型
topic_first_post_id
mediumint
8
否
否
主题首帖编号
topic_last_post_id
mediumint
8
否
否
主题末帖编号
topic_moved_id
mediumint
8
否
否
主题移动编号
3phpbb_users表
该表保存了注册会员的基本信息,包括用户名、密码、E-mail等个人信息。
各字段信息如表3:
表3:
phpbb_users表
字段名
类型
长度
允许空
主键
描述
user_id
mediumint
8
否
是
用户编号
user_active
tinyint
11
是
否
用户活动性
user_name
varchar
25
否
否
用户名
user_password
varchar
32
否
否
用户密码
user_lastvisit
int
11
否
否
用户上次登录
user_regdate
int
11
否
否
用户注册日期
user_level
tinyint
4
是
否
用户等级
user_posts
mediumint
8
否
否
用户帖子数
user_style
tinyint
4
是
否
用户风格
user_lang
varchar
255
是
否
用户个性签名
user_unread_privmsg
smallint
5
否
否
未读私密信件
user_last_privmsg
int
11
否
否
上一私密信件
user_login_tries
smallint
5
否
否
尝试登录次数
user_emailtime
int
11
是
否
信件时间
user_viewemail
tinyint
1
是
否
查看邮件
user_attachsig
tinyint
1
是
否
附加个性签名
user_allowsmile
tinyint
1
是
否
允许加入表情
user_allowavatar
tinyint
1
否
否
允许具体描述
user_allow_pm
tinyint
1
否
否
允许私有邮件
user_notify
tinyint
1
否
否
回帖通知
user_notify_pm
tinyint
1
否
否
私有邮件通知
user_rank
int
11
是
否
用户分类
user_avatar
varchar
100
是
否
用户具体描述
user_email
varchar
255
是
否
用户Email
user_icq
varchar
15
是
否
用户IQC
user_website
varchar
100
是
否
用户网站
user_from
varchar
100
是
否
用户来自
user_sig
text
/
是
否
用户签名
user_aim
varchar
255
是
否
用户现居地
user_msnm
varchar
255
是
否
用户msn
user_interrests
varchar
255
是
否
用户兴趣
user_actkey
varchar
32
是
否
用户职业
4phpbb_categories表
该表保存了讨论区的基本信息,比如讨论区的编号、名称等。
各字段信息具体如表4:
表4:
phpbb_categories表
字段名
类型
长度
允许为空
是否主键
描述
cat_id
mediumint
8
否
是
讨论区编号
cat_title
varchar
100
否
否
讨论区标题
cat_order
mediumint
8
否
否
讨论去顺序
5phpbb_posts表
该表保存了所有帖子的主要信息,包括帖子号、发帖者编号、发表时间等,如表5。
表5:
phpbb_posts表
字段名
类型
长度
允许为空
是否主键
描述
post_id
mediumint
8
否
是
帖子编号
topic_id
mediumint
8
否
否
主题编号
forum_id
smallint
5
否
否
论坛编号
poster_id
mediumint
8
否
否
发帖者编号
post_time
int
11
否
否
发表时间
poster_ip
char
8
否
否
发帖者IP
enable_smilies
tinyint
1
否
否
允许使用表情
enable_sig
tinyint
1
否
否
允许使用签名
post_edit_time
int
11
是
否
帖子编辑时间
post_edit_count
smallint
5
否
否
帖子编辑次数
6phpbb_posts_text表
该表保存了所有的帖子,包括发帖和回帖的名称和内容。
各字段的具体内容如表6:
表6:
phpbb_post_text表
字段名
类型
长度
允许为空
是否主键
描述
post_id
mediumint
8
否
是
帖子编号
post_subject
char
60
是
否
帖子名称
post_text
text
/
是
否
帖子内容
7phpbb_themes表
该表保存了系统的显示风格设置,如背景颜色、文字样式、字体颜色等。
各字段内容如表7:
表7:
phpbb_themes表
字段名
类型
长度
允许为空
是否主键
描述
themes_id
mediumint
8
否
是
主题编号
style_name
varchar
30
否
否
风格名称
body_background
varchar
100
是
否
body背景图片
body_bgcolor
varchar
6
是
否
Body背景色
body_text
varchar
6
是
否
Body文本
body_link
varchar
6
是
否
正常链接颜色
body_vlink
varchar
6
是
否
已点击链接色
body_alink
varchar
6
是
否
鼠标按下链接色
body_hlink
varchar
6
是
否
鼠标移过链接色
tr_color1
varchar
6
是
否
行颜色1
tr_color2
varchar
6
是
否
行颜色2
tr_color3
varchar
6
是
否
行颜色3
th_color1
varchar
6
是
否
表格头颜色1
th_color2
varchar
6
是
否
表格头颜色2
th_color3
varchar
6
是
否
表格头颜色3
td_color1
varchar
6
是
否
列颜色1
td_color2
varchar
6
是
否
列颜色2
td_color3
varchar
6
是
否
列颜色3
fontsize1
tinyint
4
是
否
字体大小1
fontsize2
tinyint
4
是
否
字体大小2
fontsize3
tinyint
4
是
否
字体大小3
fontcolor1
varchar
6
是
否
字体颜色1
fontcolor2
varchar
6
是
否
字体颜色2
fontcolor3
varchar
6
是
否
字体颜色3
4系统的实现
4.1通用类实现
为了使代码能够重复利用,实现代码的重用性,可以把一些常用的功能代码单独写在一个文件内,如连接数据库代码,头部和尾部文件等。
在使用时可以用include关键字把这些代码包含到文件中,可以减少代码的重复。
4.1.1连接数据库文件
文件db.php即为连接数据库的文件,该文件被放在inc