基于php实现的网上留言管理系统的设计—免费毕业设计论文内容摘要:

选择管理员回复是否另外发送 给自己 发布功能 显示留言者 IP 显示滚动的系统公告 显示留言以及回复信息 屏蔽只有管理员可见的留言信息 显示页面处理时间以及 PHP 运行时间 支持标题搜索,数据库对标题建有索引 管理功能 支持在线公告修改 支持批量删除数据 支持回复,编辑,删除留言信息 管理员信息经过 MD5 加密,只能在线修改用户名和密码 特色功能 聊天室,实时的信息交流平台 建立 SOCKET 会话,根据 SMTP 协议发送邮件 可在无 GD 库的空间中正常运行的验证码功能 运用大量 PHP 和 JavaScript 函数绘制网页特效 数据表的设计 在着手开发一个 Web 项目时,数据库的设计通常是第一位要做的,基本上所有的操作都会涉及到数据表的操作。 那么数据表的设计就关系到整个项目的设计和功能的实现。 网上留言信息需要一个表来存储,另外聊天室也需要一个表来存储信息,因此整个系统需要两个表,具体设计如表 表 3所示: 第 9 页 共 20 页 表 2 留言信息存储表 字段名 类型 说明 id Int(6) primry key 留言 id tname Varchar(6) 留言者姓名 tx Int(3) 头像 dtime Datetime 留言时间 title Varchar(33) 留言标题 qq Int(13) 留言者 qq Varchar(25) 留言者 nei Text 留言内容 htime Datetime 回复时间 estate Int(1) 留言状态 hnei Text 回复内容 ip Varchar(15) 留言者 ip send_mail Bool 是否接收回复邮件 表 3 聊天室信息存储表 字段名 类型 说明 chtime Datetime 信息发布时间 nick Varchar(10) 用户名称 words Varchar(100) 聊天内容 添加功能与管理功能的设计与实现 设计方案的介绍 在前面的文章中 已经介绍了 MVC 编程架构的特点,本系统的添加功能与管理功能就是采用 MVC 编程架构开发的。 具体的系统结构如图 2 所示: 图 2 添加与管理功能的 MVC架构 第 10 页 共 20 页 对添加与管理功能的 设计选用的是类似 Smart Ticket 中使用的 MVC 模式。 这种模式的特点是将 Controller 设计成一个巨大的事物处理器 (即: Switch„„ Case 语句),所有由 UI收集到的用户需求都转发给 Controller进行处理。 其具体的工作流程是这样的: View 通过“ URL?变量名 =变量值 ”的方式向 Controller 传递一个功能常量, Controller 通过 PHP 系统变量“ $_Get”接收到这个常量,然后将其放入 Switch„„ Case 语句中, Switch„„ Case 语句根据比较不同的 常量, 来 处理不同的请求 ,从而完成不同的功能。 Controller主要是通过调用 Model 内的自定义函数、 MYSQL 数据库操作类以及邮件发送类来处理不同的请求。 下面总结一下这个设计方案的优点和缺点。 从上文介绍的工作流程可以看到这种模式的优点是用户控制器提供一个控制和处理请求的集中入口点,它负责接收,截获并处理用户请求;并根据当前状态和业务操作的结果决定向客户呈现的视图。 这样做能够控制和协调每个用户跨越多个请求的处理,从而达到了集中管理的目的。 这种模式还具有多视图对应一个模型的能力,对多种不同方式的访问请求可 以用一个模型来实现,减少了代码的重复和维护量,一旦模型改变也易于维护。 其次由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。 当然,这种模式也有一个缺陷,那就是随着功能的不断增加Controller 将变得过于庞大,这样将影响系统的运行速度,增加用户等待响应的时间。 但就本系统的功能而言,用 Controller 来完成还是绰绰有余的。 各部分实现过程的介绍 首先介绍 View 部分的实现过程。 就添加功能而言设计了一个界面优美的视图如图 3 所示,用户主要是通过填写 Html 表单完成个人信息以及留言信息 的录入,这些数据通过 POST 方式传递给 Controller。 另外还用 JavaScript 的“ ()”函数在客户端即时获取用户输入的数据,然后再用 if 判断语句检查用户输入的数据是否标准,如果不标准系统就会通过“ (obj_name).innerHTML”变量显示提示语句,明确地告诉用户如何输入正确的数据。 第 11 页 共 20 页 图 3 留言信息添加界面 就管理功能而言,将视图分为两级,一级是身份验证界面,当用户正确输入用户名、密码以及验证码 之后才能进入下一级的管理界面。 在管理界面中,每一个功能都对应了一个视图,这样方便了管理员区分和使用不同的功能。 接着介绍 Controller 部分的实现过程。 前文已经介绍了 Controller 是通过判断视图传递的功能常量来选择相应的功能,下面的表 4就给出了不同常量与不同功能的对应关系: 第 12 页 共 20 页 表 4 常量与功能对应表 常量 功能 add 添加数据 edit 编辑留言信息 huifu 回复留言信息 del 删除留言信息 pldel 批量删除留言信息 admin 确认管理员身份 editadmin 在线修 改管理员信息 editgonggao 在线修改公告内容 out 管理员退出 就添加功能而言, Controller 会接收到 View 传递的“ add”功能常量,于是 Controller 会先通过 PHP 的系统变量“ $_POST”来接收用户输入的数据,然后再应用 Model 内的自定义函数对用户输入的数据进行鉴定和过滤,最后Controller 就调用 Model 内的数据库操作类,通过使用对象的成员函数将数据保存到数据库里。 在录入数据的同时,用户还可以选择是否通过邮件接收管理员回复,以及所发的留言是正常显示,还是仅管理员 可见。 就管理功能而言,首先要明确的是身份认证的归属,它似乎是应用逻辑的一部分,因此是属于 Model。 但是如果要限制只有通过验证的用户才能执行特定动作,那么这一要求只能由 Controller 来完成,因为这些特定的动作必须在Controller 内定义,而且只有 Controller 可以进入 Model,所以身份认证归入Controller 才是最合理的划分。 对身份验证的安全性在 Controller 内采用了双保险:第一是使用 PHP 的系统函数“ MD5()”对管理员密码进行加密,使得用户只能在网上修改管理员的用户名和密码 ;第二是使用特色功能里的验证码功能来防止某些用户采用 暴力破解方式进行不断的登陆尝试。 当管理员成功登入系统后又面临了一个问题,那就是网页是一种无状态的连接程序,因此你无法得知用户的浏览状态。 要解决这个问题就会用到 PHP 的Session 功能,我们通过 Session 记录用户的有关信息,以供用户再次以此身份对 Web 服务器提供要求时作确认。 具体的实现是这样的:当用户进入网站我们就调用“ SESSION_START()”函数打开一个会话期,当管理员成功登入系统后,我们用“ $_SESSION[admin]”这个全局变量保 存下管理员密码,那么服务器就记录下了管理员的信息,以后在使用其他功能时就不需要用户输入用户名和密码了。 当管理员退出系统时,我们可以使用“ UNSET($_SESSION[admin])”来销毁保存在服务器端的管理员信息。 当然 SESSION 也存在一些不足之处,如它会 占用少许 第 13 页 共 20 页 服务器资源以及关闭浏览器即会失效。 但换一种角度去思考,“关闭浏览器即会失效”其实是从安全的角度设计的。 在整个管理员的 会话期里, Controller 是通过 PHP 的系统变量“ $_Get”来接收管理员选择的功能常量,然后再让 Switch„„ Case 语句 根据比较不同的常量, 来 处理不同的请求 ,从而完成管理员要求的功能。 最后介绍 Model 部分的实现过程。 Web 开发归根结底就是与数据库打交道,对数据操作的封装是最基本的,在设计时应当充分考虑到未来的需要和可扩展性,如果在开发业务逻辑模型期间再对数据操作的封装进行修改,往往可能会伤筋动骨,牵连的内容会较多。 本系统涉及的数据表比较单一,即每次操作主要针对一个数据表。 因此,在 Model 内使用 PHP 语言设计了一个通用的类,只更换数据表即可完成对数据库的操作。 在这个类中,成员函数主要实现的功能包括: ( 1)初始化 成员变量; ( 2)连接数据库; ( 3)执行 SQL 语句; ( 4)返回当前查寻数据的数据行数; ( 5)返回数据总行数; ( 6)读取数据; ( 7)关闭连接。 通过这个类就将系统对数据库的操作封装起来,方便 Controller 的操作,同时也使系统更安全了。 另外还设计了一个邮件发送类。 开发这个类的目的在于满足一些用户希望通过 Email 接收管理员回复的要求。 这个类支持两种发送 Email 的方法:第一种,使用 PHP 自带的“ MAIL()”函数来发送;第二种,使用 SMTP 协议的 SOCKET 发送。 由于 PHP 没有提供现成的 SMTP 函数,只提供了一个功能不甚灵活的“ MAIL()”函数,这个函数需要服务器配置上的支持,并且不支持 SMTP 验证,在很多场合无法正常的工作,因此才开发了第二种发送 Email 的方法来弥补第一种方式的不足。 第二种发送方式实际上是利用 PHP 的 SOCKET 函数来和 SMTP 服务器建立一个连接,然后发送文本的命令给服务器 , 一封内容简单的邮件就发送出去了。 第二种方式的好处在于 PHP 中 已经存在很多现成的封装得很好的类或者函数替我们完成底层的 SOCKET 级操作,只需要直接拿来用就好,而 不用 在本文里去讨论底层的代码。 下面就给出通 过 SOCKET 发送 Email 的具体实现过程: ( 1)创建 SOCK,并打开连接; ( 2)设置为阻塞模式; ( 3)测试 SMTP 应答码是否为 220, 220代表邮件服务就绪; 第 14 页 共 20 页 ( 4)发送用户身份验证,然后读取服务器端发送给客户端的返回数据; ( 5)发送 AUTH LOGIN 命令; ( 6)发送用户名以及密码; ( 7)身份验证成功过后,向服务器添加 From 以及 To; ( 8)发送 DATA 命令,开始输入 Email 数据,以“ .”号结束; ( 9)书写邮件内容,将邮件内容发送到 SMTP 服务器; ( 10)发送 QUIT 命令,结束会话。 在 Model 中还包含了一个自定义函数文件,这些函数主要是被 Controller调用,起到对用户输入数据进行鉴定和过滤的作用。 这些函数的具体功能包括: ( 1)接收功能常量; ( 2)接收用户在前台输入的数据; ( 3)限制用户信息输入的范围; ( 4)过滤用户输入的错误数据; ( 5)显示页面跳转窗口。 发布功能的设计与实现 发布功能主要是将留言信息显示给用户查看,其中发布的界面主要对应了三种使用功能:留言发布界面、管理员界面、用户信息的搜索界面。 由于发布功能不是很复杂,因此所采用的 MVC 的架构也有所不同。 具体的 系统结构如下图 4所示: 图 4 发布功能的 MVC架构 首先介绍 View 部分。 在这里我用 Html 语言编写了一个留言框模板,这个模 第 15 页 共 20 页 板主要用于定义留言信息的显示格式。 它由 Form 表单组成,其中用 “ [%标签名称 %]”标记出要动态显示的内容所在的位置,同时给 Form 表单的 ID赋一个值,以便 Controller 调用。 另外还使用 JavaScript 制作了一些实用的前台动态效果,它们包括: ( 1)建立一些主要链接上的中文提示框; ( 2)支持在新的窗口打开用户插入的图片; ( 3)输出滚动显示的公告 ; ( 4)屏蔽脚本错误; ( 5)显示页面处理时间以及 PHP 运行时间等。 下面就给出留言发布界面的效果图(图 5): 图 5 留言发布界面 接着介绍 Controller 部分。 在这里 ID 是 JavaScript 标签容器命名属性 ,innerHTML 表示一个容器内所包含的所有代码 ,通过“ ”就能够在JavaScript 中取得 View 部分所定义的留言框模板的代码。 然后再通过JavaScript 的 replace 方法与正则表达式结合应用 ,从而替换模板中的标签内容,将留言信息插入到留言框模板中去。 这种 设计方法的好处在于客户端不用刷新页面就能看到动态更新的内容,并且利用 JavaScript 语言将处理静态页面的代码与处理动态页面的代码分离开,方便了程序员查找和修改程序。 第。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。