小言_互联网的博客

实战项目!用PHP实现的编程论坛网站

244人阅读  评论(0)

微信公众号:Java随笔录
关注可了解更多Java相关的技术分享。问题或建议,欢迎公众号留言!

一、系统需求分析

1. 系统描述

作为一个计算机专业的学生,本人深切感受到编程技术的交流学习对自身技能提升的重要性。而随着Web的发展,网上出现了很多论坛社区,但它们的话题范围并不限于编程,针对性不强,而且提供的服务也较为单一。因此,一个针对编程技术交流、完整统一、功能多样化的编程论坛社区是所有编程新手、老手所渴求的。

编程论坛社区IBBS的主体功能包括发布帖子、在已发布的帖子下进行评论、引用评论进行回复。除此之外,还有两个功能模块:动态推送功能,向用户推送最新的技术热点、编程方面的最新动态,包括简要的内容说明以及链接跳转;资源下载功能,向注册用户提供编程资源下载服务。本系统前台面对的用户分为普通用户和注册用户,普通用户只具有浏览网站的权限,浏览内容包括帖子、评论、注册用户的个人主页以及动态推送页面,不能使用内容发布、资源下载等功能;而注册用户则能使用本系统前台提供的所有功能,包括发布帖子、评论、下载资源、维护自己的个人主页和个人信息等。当然,本系统提供了注册、登录功能,并通过随机验证码的方式提高了认证能力。每个注册用户都拥有自己的个人主页,在个人主页中可以看到自己发布的帖子,能够对它们进行二次编辑,还能够设置、更换头像,修改密码等。

本系统的后台由管理员进行管理和维护,其中管理员分为两个等级,普通管理员拥有前台信息管理的权限,包括版块信息管理、用户信息管理、帖子管理等权限,而超级管理员则在此基础上拥有更多权限,包括系统设置、管理员设置等。管理员在后台能够动态地管理大部分前台信息,包括父、子版块的增删改,删除不符合规范要求的帖子,动态信息的增删改,编程资源的增删改等。十分便利,很大地提高了后台管理的效率。
编程论坛社区IBBS给编程者们提供了一个专业的交流平台,在这里,你可以分享自己的编程经验,交流学习编程技术,获取最新的技术动态,下载编程学习资源。给编程者们提供了一个便捷、内容丰富、高效率的学习平台。

2. 需求分析和应用程序功能

编程论坛社区IBBS数据库需要存储如下信息:

  • 有关父版块的信息主要包括了父版块id,父版块的名称,以及父版块的简介;

  • 而子版块的信息则包括子版块id、子版块名称、子版块简介、该子版块的版主,即某个注册用户的id,以及该子版块下的帖子数量,还有就是该子版块所属于的父版块,即某个父版块的id;

  • 有关帖子的信息涉及帖子的id、帖子的标题、帖子的内容、帖子的发布时间、帖子所属子版块的id、帖子的浏览次数以及发布该帖子的用户id;

  • 有关评论的信息,首先评论分为两种,一种是评论用户发布的帖子,另一种是引用已有的评论进行二次评论(即可以回复评论)。上述需求在数据库表中体现为一个字段,该字段为0表示该条记录是评论某个帖子的,若不为零,则该字段为所回复评论的id。其他信息还包括了该条评论的id、该条评论所属帖子的id、评论的内容、评论发布的时间,以及发布该条评论的用户id;

  • 有关注册用户的信息包括用户id、用户名、账号密码、用户头像的存储路径、账号的注册时间以及账号最近一次登录的时间。其中,注册用户拥有修改自己的账户密码,以及更换头像的权限;

  • 有关最新动态的信息包括动态的id、动态的标题、动态的简介、动态的相关链接,以及动态的添加时间;

  • 有关资源的信息包括资源的id、资源的标题(例如图书资源的书名)、资源的简介、资源的存储路径、资源对应图片的存储路径,以及资源的添加时间;

  • 另外,还需要存储管理员的信息,其中管理员分为两个等级,普通管理员拥有前台信息管理的权限,包括版块信息管理、用户信息管理、帖子管理等权限,而超级管理员则在此基础上拥有更多权限,包括系统设置、管理员设置等。上述等级的区分使用一个字段来完成,而其他信息还包括管理员的账户id、账户名、账户密码,以及账户的创建时间。

3. 系统常做的查询与更新

经常做的查询,或许对创建索引有影响的:

  • 由父版块的id查找属于该父版块的子版块、帖子

  • 由子版块的id查找属于该子版块的帖子

  • 由帖子的id查找该帖子的详细内容以及该帖子下的评论内容

  • 由用户的id查找用户发布的帖子

根据经常做的查询,需要创建有关视图的:

  • 父版块列表

  • 子版块列表

关于更新:

  • 父版块和子版块信息录入后,更新较少,相对稳定,主要是记录的添加和删除,管理员具有添加、修改和删除父版块、子版块的权限

  • 技术动态和资源这两个部分的信息同样更新很少,相对稳定,主要是记录的添加和删除,管理员同样具有添加、修改和删除的权限

  • 帖子发布后,相应的用户具有二次编辑和删除的权限,而考虑到某个帖子的内容可能不符合论坛社区的规范,因此管理员拥有删除任何用户发布的帖子的权限,以维持论坛社区的健康

  • 用户信息录入后,向注册用户开放更换头像以及修改密码的权限

4. 应用程序功能

前台的主要功能如下:

  • 1、 对网站游客开放:

    • a. 查看父版块以及相应子版块的信息简介

    • b. 浏览注册用户发布的帖子以及帖子下的评论

    • c. 浏览注册用户的个人中心

    • d. 可以使用搜索功能,通过关键字搜索对应的帖子

    • e. 可以浏览技术动态模块中的信息

    • f. 可以浏览资源模块中的资源信息,但是不能下载

  • 2、对注册用户开放:

    • a. 包括了网站游客能够使用的功能

    • b. 能够在相应的子版块下发布帖子

    • c. 能够在相应的帖子下面发布评论,回复评论

    • d. 可以下载资源模块中的资源

    • e. 可以管理自己的个人中心,包括修改密码、更换头像等

    • f. 可以二次编辑或删除自己发布的帖子

后台的主要功能如下(管理员对网站数据的管理基本全部包括查询,修改,增添,删除操作):

  • 1、系统信息总览:

    • a. 当前登录管理员账号的基本信息

    • b. 系统所用服务器的配置信息

    • c. MySQL版本信息以及PHP配置信息

    • d. 网站当前的数据汇总,包括父版块、子版块数量,帖子总数以及注册用户数等

  • 2、父版块管理:

    • a. 分页展示当前的父版块列表

    • b. 添加新的父版块

    • c. 编辑某个父版块的信息

    • d. 删除某个父版块

  • 3、 帖子管理:

    • a. 以管理员账号跳转到前台页面,浏览每个版块下的帖子,且拥有删除任何一篇帖子的权限
  • 4、用户管理:

    • a. 分页展示当前的注册用户

    • b. 通过关键字来搜索某些用户

    • c. 访问用户的个人中心

    • d. 删除用户账号

  • 5、动态管理:

    • a. 分页展示当前的动态列表

    • b. 添加新的动态

    • c. 编辑某个动态的信息

    • d. 删除某个动态

  • 6、资源管理:

    • a. 分页展示当前的资源列表

    • b. 添加新的资源,包括文字简介、图片介绍以及资源文件等

    • c. 编辑某个资源的信息

    • d. 删除某个资源

二、数据库概念设计

1. 确定实体和属性

分析编程论坛系统的系统需求,将系统中设计的人、物进行抽象,得到了系统的实体如下:

  • 1.父版块信息实体集。属性包括:父版块名称、父版块简介

  • 2.子版块信息实体集。属性包括:所属父版块的id、子版块名称、子版块简介、子版块版主的用户id、子版块下帖子的数量

  • 3.帖子信息实体集。属性包括:帖子所属子版块的id、帖子的标题、帖子的内容、帖子的发布时间、发布该帖子的用户id、帖子的浏览次数

  • 4.帖子评论实体集。属性包括:评论所属帖子的id、用于区分该评论是普通评论还是引用评论的id、评论的内容、评论的发布时间、发布该评论的用户id

  • 5.动态信息实体集。属性包括:动态的标题、动态的简介、动态的链接、动态的添加时间

  • 6.资源信息实体集。属性包括:资源的标题、资源的简介、资源文件的存储路径、资源介绍图片的存储路径、资源的添加时间

  • 7.用户信息实体集。属性包括:用户id、用户名、经过加密的用户密码、用户头像的存储路径、用户的注册时间、用户上次登录的时间

  • 8.管理员信息实体集。属性包括:账户名、经过加密的账户密码、创建时间、管理员等级

2. E-R图

系统E-R图如图2-1所示:

三、数据库逻辑结构设计

1. 关系模式设计

根据概念结构设计得到的E-R图和转换规则,得到如下关系模式(主键加粗标出,外键予以说明):

父版块信息表(父版块id,版块名,版块简介)

子版块信息表(子版块id,所属父版块的id,版块名,版块简介,版主的用户id)

帖子信息表(帖子id,帖子所属子版块的id,帖子标题,帖子内容,帖子的发布时间,发布该帖子的用户id,帖子的浏览次数)

评论信息表(评论id,评论所属帖子的id,区分普通评论/引用评论的id,评论内容,评论发布的时间,发布该评论的用户id)

动态信息表(动态id,动态标题,动态简介,动态链接,动态的添加时间)

资源信息表(资源id,资源标题,资源简介,资源文件的存储路径,资源介绍图片的存储路径,资源的上传时间)

用户信息表(用户id,用户名,加密后的账户密码,用户头像的存储路径,用户注册时间,用户上次登录的时间)

管理员信息表(管理员id,账户名,加密后的账户密码,账户的创建时间,区分普通管理员/超级管理员的id)

2. 基本表设计



四、数据库物理设计和实施

1. 创建基本表

基本表的创建详见SQL文件ibbs.sql,这里不再赘述。

2. 其他数据库对象的设计

实际的生产环境中,以明文的方式在数据库中存放密码是十分危险的行为,一旦遇到脱库等其他情况,所有的用户信息都将毫无保留地呈现在攻击者面前。因此,我的做法是将用户设置的密码经过加密后再存入数据库中,同时,在用户登录、密码修改等涉及密码的场景中,都是将密码进行了二次加密再进行比较,以保障用户的信息安全。

五、应用程序设计

1. 开发及运行环境介绍

使用的技术栈为PHP + MySQL + Bootstrap + jQuery,使用到的开发工具有PhpStorm、WebStorm、XAMPP等,且该应用已经部署到服务器上并能够正常运行。

2. 主要功能设计

用户:用户主要有浏览父版块、子版块、用户发布的帖子和评论等信息、注册登录、发布帖子、发布评论、浏览技术动态、浏览资源页面、下载资源、搜索帖子、查看自己以及其他用户的个人中心、修改账户密码、更换头像等功能。

管理员主要有添加、修改以及删除父版块、子版块、技术动态、资源的功能,还能根据用户名搜索用户、管理用户、跳转到前台针对一些不符合规范的帖子进行删除等处理。

下图是用户的主要功能流程:

3. 主要界面

首页界面如图5-1所示。

登录界面如图5-2所示。

注册界面如图5-3所示。

个人中心界面如图5-4所示。

修改头像界面如图5-5所示。

修改密码界面如图5-6所示。

父版块界面如图5-7所示。

子版块界面如图5-8所示。

帖子详情界面如图5-9所示。

普通评论以及引用评论如图5-10所示。

发帖界面如图5-11所示。

普通评论界面如图5-12所示。

引用评论界面如图5-13所示。

搜索界面如图5-14所示。

技术动态界面如图5-15所示。

资源界面如图5-16所示。

管理员登录界面如图5-17所示。

后台管理主界面如图5-18所示。

管理人员列表界面如图5-19所示。

管理员添加界面如图5-20所示。

父版块列表界面如图5-21所示。

子版块列表界面如图5-22所示。

注册用户列表界面如图5-23所示。

用户搜索界面如图5-24所示。

动态列表界面如图5-25所示。

动态添加界面如图5-26所示。

资源列表界面如图5-27所示。

资源添加界面如图5-28所示。

六、源码下载

完整项目的源码以及SQL文件已经上传,详见下载地址

公众号

  • 关注公众号,即时接收关于Java的技术分享!


转载:https://blog.csdn.net/J__Max/article/details/115862661
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场