




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学学 位位 论论 文文 phpphp 网上留言系统网上留言系统 论论文作者姓名:文作者姓名: 申申请请学位学位专业专业: : 申申请请学位学位类别类别: : 指指导导教教师师姓姓名名( (职职称称) ): : 论论文提交日期:文提交日期: 基于基于 PHPPHP 实现的网上留言管理系统的设计实现的网上留言管理系统的设计 摘摘 要要 随着互联网技术的迅猛发展,网络已经充斥到我们生活的方方面面,网上 留言系统已经成为各种网站不可或缺的一个组成部分。一个设计美观、功能完 善的网上留言系统是网站吸引网民的一个重要因素。同时,它还为网络用户提 供了一个多人参与的信息交流平台。基于 PHP 实现的网上留言管理系统采用 BS(BrowserServer)应用架构以及 MVC(Model View Controller)编程 架构设计开发。具体的开发细节是使用 PHP 语言完成系统的开发。整个系统不 仅能够对网上留言信息进行录入、发布、查询与管理,而且还增加了如:验证 码、邮件发送、聊天室、密码管理等功能。这样使得网上留言系统真正成为功 能丰富、高效实用的网上信息交流平台。 关键词关键词:PHP;BS;MVC;面向对象;留言系统 Design of Message Board System Based on PHP Abstract With the rapid development of the Internet technology, the network application has been widely used in the world, the message board system already becomes an indispensable constituent of the website. A message board system which has beautiful designs and integrated functions can be an important factor of attracting people. Meanwhile, it provides Internet users with an information exchange platform. The design of message board system based on PHP is developed by B/S(Browser/Server) application construction and MVC(Model View Controller) programming construction. The detail of the development is using the PHP language to develop the system. The whole system not only can input, issue, query and manage the on-line message but also adds some functions such as validating code, mail transmission, chatting room or password management. This makes the message board system truly be a multifunctional and efficient on-line information exchange platform. Key words: PHP; B/S; MVC; Object Oriented; Message Board System 目目 录录 论文总页数:20 页 1引言.1 1.1课题背景.1 1.2本课题研究的意义.1 1.3本课题的研究方法.1 2留言系统开发语言的介绍.1 2.1PHP 语言概述 .1 2.2PHP 对 MYSQL 数据库的访问 .2 2.3JAVASCRIPT语言概述.2 3留言系统开发架构的介绍.3 3.1BS 应用架构的介绍 .3 3.1.1BS 架构概述 .3 3.1.2BS 架构的优点 .3 3.1.3BS 架构的缺点 .4 3.2MVC 编程架构的介绍 .5 3.2.1MVC 架构概述 .5 3.2.2MVC 架构的优点 .6 3.2.3MVC 架构的缺点 .7 4基于 PHP 的网上留言管理系统的设计与实现.7 4.1功能的确定.7 4.2数据表的设计.8 4.3添加功能与管理功能的设计与实现.9 4.3.1设计方案的介绍.9 4.3.2各部分实现过程的介绍.10 4.4发布功能的设计与实现.14 4.5特色功能的设计与实现.16 结 论.18 参考文献.18 致 谢.19 声 明.20 第 1 页 共 20 页 1 1引言引言 1.11.1 课题背景课题背景 随着互联网技术的迅猛发展,网络给人们带来了很多便利,我们在很多网 站上都能看到各式各样的留言板,它是网站与访客之间进行交流的主要手段之 一。一个设计合理,界面优美的网上留言程序能从侧面体现网站良好的服务, 给来访用户留下美好的印象,增强用户对网站的信心。 1.21.2 本课题研究的意义本课题研究的意义 网上留言系统利用网络一定的时效性和广泛的传播面,可以方便人与人之 间的信息交流和互动。对于一般企业而言,网上留言系统能够通过网络提供方 便的日常信息管理和交互,同时只需要相对低廉的建设和维护成本。另外,企 业还可以通过网上留言系统,为客户提供一个跨地域的交流平台,以便及时了 解和掌握客户的需求,加强企业与客户之间的沟通,提高企业的市场竞争力。 因此,该课题具有一定的实用价值。 1.31.3 本课题的研究方法本课题的研究方法 网上留言系统的整体结构采用的是 BS(BrowserServer)应用架构, 在这种架构下,软件应用的业务逻辑完全在应用服务器端实现,用户表现完全 在 Web 服务器实现,客户端只需要浏览器即可进行业务处理。整个系统的设计 采用的是 MVC(Model View Controller)编程架构,使得功能模块和显示模块 能够分离,提高应用系统的可维护性、可扩展性、可移植性和组件的可复用性。 留言系统的具体实现是采用服务器端脚本语言 PHP 来完成对系统后台的开发以 及使用 Html 语言和 JavaScript 脚本语言来完成对系统前台的开发。 2 2留言系统开发语言的介绍留言系统开发语言的介绍 2.12.1 PHPPHP 语言概述语言概述 PHP是能让你生成动态网页的工具之一。PHP代表:超文本预处理器 (PHP:Hypertext Preprocessor) 。PHP是完全免费的,不用花钱,你可以从 PHP官方站点自由下载。PHP遵守GNU公共许可(GPL) ,在这一许可下诞生了许多 流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加 进你自己需要的特色。PHP在大多数Unix平台,GUNLinux和微软Windows平台 上均可以运行。PHP很容易学习,但是速度上比ModPerl(植入Web服务器的 Perl模块)慢。现在有了可以与ModPerl速度想媲美的被称作Zend的新引擎, 而PHP5就可以充分利用这个引擎。PHP5还引入了新的对象模型(Object Model) 。 完全重写了PHP处理对象的方式,这样可以提高程序的抽象程度,更接近人的思 维方式,使程序结构更清晰并降低编码和维护的工作量。当前PHP与 Linux、Apache、MYSQL、Zend构成了性价比最高的Web系统。 第 2 页 共 20 页 应用PHP有许多好处。当然已知的不利之处在于PHP由于是开放源码项目, 没有什么商业支持,对于小项目,它可以是一个十分符合人意的编程语言。但 是对于较大的和更为复杂的项目,PHP就显出他的薄弱了。PHP是一个不断发展 的语言,相信这些问题在不久的将来会得到很好地解决。 2.22.2 PHPPHP 对对 MYSQLMYSQL 数据库数据库的访问的访问 MYSQL 是一个快速、健壮和易用,且支持多线程、多用户的 SQL 数据库服 务器。虽然 PHP 通过 ODBC 支持几乎所有的数据库。但对于开发数据驱动的网站 而言,选择 MYSQL 应该说是最佳组合,这不仅因为 MYSQL 是免费的,更在于它 具有与同类大型数据库相媲美甚至超过它们的优良性能。PHP 实现对 MYSQL 数 据库的访问有两种方法: (1)利用 PHP 的数据库函数连接: 创建 MYSQL 连接:MYSQL_CONNECT(数据库所在位置,数据库账号,数据库密 码)。 数据库选用:MYSQL_SELECT_DB(数据库名)。 执行 SQL 指令:MYSQL_QUERY(SQL 语句,$link)。 分析表身:MYSQL_FETCH_ROW()函数,必须传入$result 查询结果变量,再 通过 for 循环,并配合 count()函数计算数据行中的列数,将$row 数组中每一 元素显示出来。 释放资源:MYSQL_FREE_RESULT($result)或 MYSQL_CLOSE($link)。 (2)通过 ODBC 连接: PHP 通过 ODBC 连接 MYSQL 数据库主要用到四个函数: ODBC_CONNECT():用来同 ODBC 数据源建立连接。 ODBC_DO():用来在建立连接之后执行数据库查询。 ODBC_RESULT():用于取得当前记录行中某个字段的值。 ODBC_FETCH_ROW():用来把查询结果保存到数组,每个数组元素对应一条 记录。 上述两种方法在与数据库建立连接的语法上,并没有太大差别。不过在相 比较之下,通过 ODBC 方式存取数据库比 PHP 直接存取 MYSQL 耗时间,但通过 ODBC 接口存取数据库不必担心使用何种数据库,如 Oracle,Informix,Sybase 等。结合网上留言系统在实际当中的应用,还是决定选择 PHP 直接存取 MYSQL 的方式来管理数据库。另外以上两种方式都支持 ODBC 接口,这样可减少更换数 据库时需要更改程序的问题。 2.32.3 JavaScriptJavaScript 语言概述语言概述 JavaScript 是一种基于对象(Object)和事件驱动(Event Driven)并具 第 3 页 共 20 页 有安全性能的脚本语言。使用它的目的是与 HTML 超文本标记语言、PHP 脚本语 言一起实现在一个 Web 页面中链接多个对象,与 Web 客户交互作用,从而可以 开发客户端的应用程序等。它是通过嵌入或调入在标准的 HTML 语言中实现的。 它的出现弥补了 HTML 语言的缺陷。 JavaScript 的出现使得信息和用户之间不仅只是一种显示和浏览的关系, 而是实现了一种实时的、动态的、可交式的表达能力。从而基于 CGI 静态的 HTML 页面将被可提供动态实时信息,并对客户操作进行反应的 Web 页面的取代。 JavaScript 脚本正是满足这种需求而产生的语言。它深受广大用户的喜爱。它 是众多脚本语言中较为优秀的一种,与 WWW 的结合有效地实现了网络计算和网 络计算机的结合。 使用 JavaScript 的优势在于传统的数据提交和验证工作均由用户端浏览器 通过网络传输到服务器上进行。如果数据量很大,这对于网络和服务器的资源 来说实在是一种无形的浪费。而 JavaScript 则可以在客户端进行数据验证,可 以方便地操纵各种浏览器的对象,可以控制浏览器的外观,状态甚至运行方式, 可以根据用户的需要“定制”浏览器,从而使网页更加友好。JavaScript 还可 以使多种任务仅在客户端就可以完成而不需要网络和服务器的参与,从而支持 分布式的运算和处理。 3 3留言系统开发架构的介绍留言系统开发架构的介绍 3.13.1 B BS S 应用架构的介绍应用架构的介绍 .1B BS S 架构概述架构概述 BS(BrowserServer)结构即浏览器和服务器结构。它是随着 Internet 技术的兴起,对 CS(ClientServer)结构的一种变化或者改进的结构。在 这种结构下,用户工作界面是通过 WWW 浏览器来实现,极少部分事务逻辑在前 端(Browser)实现,主要的事务逻辑在服务器端(Server)实现,形成所谓三 层 3tier 结构。这样就大大简化了客户端电脑负荷,减轻了系统维护与升级 的成本和工作量,降低了用户的总体成本。 以目前的技术看,局域网建立 BS 结构的网络应用,并通过 InternetIntranet 模式下建立的数据库应用,相对易于把握,成本也是较低 的。BS 结构是一次性到位的开发,能实现不同的人员,从不同的地点,以不 同的接入方式(比如 LAN,WAN,InternetIntranet 等)访问和操作共同的数 据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特 别是在 PHP 这样的跨平台语言出现之后,BS 架构管理软件更是方便、快捷、 高效。 第 4 页 共 20 页 .2 B BS S 架构的优点架构的优点 BS 结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的 软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容 易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚 至可以在线申请,通过公司内部的安全认证(如证书)后,不需要人的参 与,系统可以自动分配给用户一个账号进入系统。 其次是维护和升级方式简单。目前,软件系统的改进和升级越来越频繁, BS 架构的产品明显体现着更为方便的特性。对一个稍微大一点的单位来说, 系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是 可想而知的,但 BS 架构的软件只需要管理服务器就行了,所有的客户端只是 浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构 都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果 是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客 户机越来越“瘦” ,而服务器越来越“胖”是将来信息化发展的主流方向。今后, 软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物 力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式 是“瘦”客户机, “胖”服务器。 最后是成本降低,选择更多。大家都知道 Windows 在桌面电脑上几乎一统 天下,浏览器成为了标准配置,但在服务器操作系统上 Windows 并不是处于绝 对的统治地位。现在的趋势是凡使用 BS 架构的应用管理软件,只需安装在 Linux 服务器上即可,而且安全性高。所以服务器操作系统的选择是很多的, 不管选用哪种操作系统都可以让大部分人使用 Windows 作为桌面操作系统的电 脑不受影响,这就使得最流行 Linux 操作系统快速发展起来,Linux 除了操作 系统是免费的以外,连数据库也是免费的,这种选择是非常盛行的。 比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要 了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站服务器是没 有使用 Windows 操作系统的,但用户的电脑本身安装的大部分是 Windows 操作 系统。 .3 B BS S 架构的缺点架构的缺点 应用服务器运行数据负荷较重是 BS 架构的缺点。由于 BS 架构管理软 件只安装在服务器端(Server)上,网络管理人员只需要管理服务器就行了, 用户界面主要事务逻辑在服务器(Server)端完全通过 WWW 浏览器实现,极少 部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人 员只需要做硬件维护。但是,应用服务器运行数据负荷较重,一旦发生服务器 第 5 页 共 20 页 “崩溃”等问题,后果不堪设想。因此,许多单位都备有数据库存储服务器, 以防万一。 3.23.2 MVCMVC 编程架构的介绍编程架构的介绍 .1 MVCMVC 架构概述架构概述 MVC 英文即 Model,View,Controller,即把一个应用的输入、处理、输出 流程按照 Model,View,Controller 的方式进行分离,这样一个应用层被分为 三个层模型层,视图层、控制层。 视图(View)代表用户交互界面,对于 Web 来说,可以概括为 HTML 界面, 但也有可能为 XHTML、XML、Applet 和 Flash 等。随着应用的复杂性和规模性的 提高,界面的处理也变得具有挑战性,一个应用可能有很多不同的视图,MVC 设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求, 而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。 比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的 输入数据和请求传递给 Controller 和 Model。 模型(Model)就是业务流程和状态的处理以及业务规则的制定。业务流程 的处理过程对其他层来说是暗箱操作,模型接受视图请求的数据,并返回最终 的处理结果。业务模型的设计可以说是 MVC 最主要的核心。目前流行的 EJB 模 型就是一个典型的应用例子,它从应用技术实现的角度对模型作了进一步的划 分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告 诉你按照模型设计就可以利用某些技术组件,从而减轻了技术上的困难。对一 个开者来说,就可以专注于业务模型的设计。MVC 设计模型告诉我们,把应用 的模型按照一定的规划抽取出来,抽取的层次很重要,这也是判断开发人员是 否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC 并没有提供 模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提 高重用性。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要是指实体 对象的数据保存。比如将一张订单保存到数据库中,从数据库获取订单。我们 可以将这个模型单独列出,所有有关的数据库的操作只限在该模型中。 控制(Controller)可以理解为从用户接受请求,将模型与视图匹配在一 起,共同完成用户的请求,划分控制层的作用很明显,它清楚地告诉开发者, 它仅是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样 的用户请求。控制层不作任何的数据处理。例如,用户点击一个链接,控制层 接收请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做 什么,把符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一 第 6 页 共 20 页 个视图可能对应多个模型。 总之,模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。 如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据 的视图都能反映这些变化。因此,无论何时发生了何种数据变化,控制器都会 将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化与传播 机制。模型、视图、控制器三者之间的关系和各自的主要功能,如下图(图 1)所示: 图 1 模型、视图、控制器的关系和功能 .2 MVCMVC 架构的优点架构的优点 当前有相当一部分 Web 应用程序都是用过程化语言来创建的。它们将像数 据库查询语句这样的数据层代码和像 HTML 这样的表示层代码混在一起,直接向 数据库发送请求并用 HTML 显示,开发速度往往比较快,但由于数据页面的分离 不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹 性力度很小,很难满足用户的变化性需求。经验比较丰富的开发者会将数据从 表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝 试。MVC 的出现很好地解决了以上问题,它要求对应用分层,虽然要花费额外 的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。 首先,MVC 最重要的一点是多个视图能共享一个模型。在目前用户需求的 快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统 的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样, 也就是说订单的处理是一致的。按 MVC 设计模式,一个订单模型以及多个视图 即可解决问题。这样即减少了代码的复制,又减少了代码的维护量,一旦模型 发生改变,也易于维护。并且由于模型返回的数据不带任何显示格式,因而这 些模型也可直接应用于接口的使用。 第 7 页 共 20 页 其次,将 MVC 分离可以让不同的专家负责不同的模块,一般情况下,Model 部分由熟悉数据库,网络传输的专家来负责;View 则交给对 UI(User Interface)有研究的专家。这对于项目的管理者而言是多么的诱人,分工意味 着可以提高效率并可以按照传统的责任划分来处理软件开发过程。对开发者而 言也可以专心于一个领域。这样做的前提是接口要明确,MVC 的分离思想正为 其提供了基础。 最后,控制器也提供了一个好处,就是可以使用控制器来连接不同的模型 和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。 给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理, 然后选择视图将处理结果显示给用户。总的来说 MVC 编程架构是有利于软件工 程化管理的,因为不同的层各司其职,每一层不同的应用具有某些相同的特征, 有利于通过工程化、工具化产生管理程序代码。 .3 MVCMVC 架构的缺点架构的缺点 MVC 的缺点是由于它没有明确的定义,所以完全理解 MVC 并不是很容易。 使用 MVC 需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时 间去思考。具体的不足体现在以下几个方面: (1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循 MVC, 使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操 作,降低运行效率。 (2)视图与控制器间的连接过于紧密。视图与控制器是相互分离,但却是 联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这 样就妨碍了它们的独立重用。 (3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能 需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问, 也将损害操作性能。 另外,你还将不得不花费相当可观的时间去考虑如何将 MVC 运用到你的应 用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一 定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了 测试,你就可以毫无顾忌的重用它们了。 最后,根据开发者经验,由于开发者将一个应用程序分成了三个部件,所 以使用 MVC 同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。 这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不 值一提的。并且本系统也针对这些缺点做了一些改进,下面就将介绍系统详细 的设计开发过程。 第 8 页 共 20 页 4 4基于基于 PHPPHP 的网上留言管理系统的网上留言管理系统的设计与实现的设计与实现 4.14.1 功能的确定功能的确定 网上留言管理系统把用户分成两类,一类是管理员,另一类是客户。管理 员负责维护整个留言系统,在对其身份进行确认后,能够对网上留言进行回复、 修改以及删除。客户则可以直接录入、查看和查询网上留言信息。具体要实现 的内容如表 1 所示: 表 1 系统详细功能介绍 添加功能 支持心情图片插入 支持输入内容时插入图片 用户基本信息以及留言内容的录入 选择留言信息正常显示或仅管理员可见 选择管理员回复是否另外发送 email 给自己 发布功能 显示留言者 IP 显示滚动的系统公告 显示留言以及回复信息 屏蔽只有管理员可见的留言信息 显示页面处理时间以及 PHP 运行时间 支持标题搜索,数据库对标题建有索引 管理功能 支持在线公告修改 支持批量删除数据 支持回复,编辑,删除留言信息 管理员信息经过 MD5 加密,只能在线修改用户名和密码 特色功能 聊天室,实时的信息交流平台 建立 SOCKET 会话,根据 SMTP 协议发送邮件 可在无 GD 库的空间中正常运行的验证码功能 运用大量 PHP 和 JavaScript 函数绘制网页特效 第 9 页 共 20 页 4.24.2 数据表的设计数据表的设计 在着手开发一个 Web 项目时,数据库的设计通常是第一位要做的,基本上 所有的操作都会涉及到数据表的操作。那么数据表的设计就关系到整个项目的 设计和功能的实现。网上留言信息需要一个表来存储,另外聊天室也需要一个 表来存储信息,因此整个系统需要两个表,具体设计如表 2、表 3 所示: 表 2 留言信息存储表 字段名类型说明 idInt(6) primry key留言 id tnameVarchar(6)留言者姓名 txInt(3)头像 dtimeDatetime留言时间 titleVarchar(33)留言标题 qqInt(13)留言者 qq emailVarchar(25)留言者 email neiText留言内容 htimeDatetime回复时间 estateInt(1)留言状态 hneiText回复内容 ipVarchar(15)留言者 ip send_mailBool是否接收回复邮件 表 3 聊天室信息存储表 字段名类型说明 chtimeDatetime信息发布时间 nickVarchar(10)用户名称 wordsVarchar(100)聊天内容 4.34.3 添加功能与管理功能的设计与实现添加功能与管理功能的设计与实现 .1 设计方案的介绍设计方案的介绍 在前面的文章中已经介绍了 MVC 编程架构的特点,本系统的添加功能与管 理功能就是采用 MVC 编程架构开发的。具体的系统结构如图 2 所示: 第 10 页 共 20 页 图 2 添加与管理功能的 MVC 架构 对添加与管理功能的设计选用的是类似 Smart Ticket 中使用的 MVC 模式。 这种模式的特点是将 Controller 设计成一个巨大的事物处理器 (即:SwitchCase 语句) ,所有由 UI 收集到的用户需求都转发给 Controller 进行处理。其具体的工作流程是这样的:View 通过“URL?变量名= 变量值”的方式向 Controller 传递一个功能常量,Controller 通过 PHP 系统 变量“$_Get”接收到这个常量,然后将其放入 SwitchCase 语句中, SwitchCase 语句根据比较不同的常量,来处理不同的请求,从而完成不同 的功能。Controller 主要是通过调用 Model 内的自定义函数、MYSQL 数据库操 作类以及邮件发送类来处理不同的请求。 下面总结一下这个设计方案的优点和缺点。从上文介绍的工作流程可以看 到这种模式的优点是用户控制器提供一个控制和处理请求的集中入口点,它负 责接收,截获并处理用户请求;并根据当前状态和业务操作的结果决定向客户 呈现的视图。这样做能够控制和协调每个用户跨越多个请求的处理,从而达到 了集中管理的目的。这种模式还具有多视图对应一个模型的能力,对多种不同 方式的访问请求可以用一个模型来实现,减少了代码的重复和维护量,一旦模 型改变也易于维护。其次由于模型返回的数据不带任何显示格式,因而这些模 型也可直接应用于接口的使用。当然,这种模式也有一个缺陷,那就是随着功 能的不断增加 Controller 将变得过于庞大,这样将影响系统的运行速度,增加 用户等待响应的时间。但就本系统的功能而言,用 Controller 来完成还是绰绰 有余的。 .2 各部分实现过程的介绍各部分实现过程的介绍 首先介绍 View 部分的实现过程。就添加功能而言设计了一个界面优美的视 图如图 3 所示,用户主要是通过填写 Html 表单完成个人信息以及留言信息的录 入,这些数据通过 POST 方式传递给 Controller。另外还用 JavaScript 的 第 11 页 共 20 页 “document.getElementById()”函数在客户端即时获取用户输入的数据,然后 再用 if 判断语句检查用户输入的数据是否标准,如果不标准系统就会通过 “document.getElementById(obj_name).innerHTML”变量显示提示语句,明确 地告诉用户如何输入正确的数据。 图 3 留言信息添加界面 就管理功能而言,将视图分为两级,一级是身份验证界面,当用户正确输 入用户名、密码以及验证码之后才能进入下一级的管理界面。在管理界面中, 第 12 页 共 20 页 每一个功能都对应了一个视图,这样方便了管理员区分和使用不同的功能。 接着介绍 Controller 部分的实现过程。前文已经介绍了 Controller 是通 过判断视图传递的功能常量来选择相应的功能,下面的表 4 就给出了不同常量 与不同功能的对应关系: 表 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()”函数打开一个会话期,当管理员成功登入系统后, 第 13 页 共 20 页 我们用“$_SESSIONadmin”这个全局变量保存下管理员密码,那么服务器就 记录下了管理员的信息,以后在使用其他功能时就不需要用户输入用户名和密 码了。当管理员退出系统时,我们可以使用“UNSET($_SESSIONadmin)”来销 毁保存在服务器端的管理员信息。当然 SESSION 也存在一些不足之处,如它会 占用少许服务器资源以及关闭浏览器即会失效。但换一种角度去思考, “关闭浏 览器即会失效”其实是从安全的角度设计的。在整个管理员的会话期里, Controller 是通过 PHP 的系统变量“$_Get”来接收管理员选择的功能常量, 然后再让 SwitchCase 语句根据比较不同的常量,来处理不同的请求,从 而完成管理员要求的功能。 最后介绍 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 中已经存在很多现成的封装得很 第 14 页 共 20 页 好的类或者函数替我们完成底层的 SOCKET 级操作,只需要直接拿来用就好,而 不用在本文里去讨论底层的代码。下面就给出通过 SOCKET 发送 Email 的具体实 现过程: (1)创建 SOCK,并打开连接; (2)设置为阻塞模式; (3)测试 SMTP 应答码是否为 220,220 代表邮件服务就绪; (4)发送用户身份验证,然后读取服务器端发送给客户端的返回数据; (5)发送 AUTH LOGIN 命令; (6)发送用户名以及密码; (7)身份验证成功过后,向服务器添加 From 以及 To; (8)发送 DATA 命令,开始输入 Email 数据,以“.”号结束; (9)书写邮件内容,将邮件内容发送到 SMTP 服务器; (10)发送 QUIT 命令,结束会话。 在 Model 中还包含了一个自定义函数文件,这些函数主要是被 Controller 调用,起到对用户输入数据进行鉴定和过滤的作用。这些函数的具体功能包括: (1)接收功能常量; (2)接收用户在前台输入的数据; (3)限制用户信息输入的范围; (4)过滤用户输入的错误数据; (5)显示页面跳转窗口。 4.44.4 发布功能的设计与实现发布功能的设计与实现 发布功能主要是将留言信息显示给用户查看,其中发布的界面主要对应了 三种使用功能:留言发布界面、管理员界面、用户信息的搜索界面。由于发布 功能不是很复杂,因此所采用的 MVC 的架构也有所不同。具体的系统结构如下 图 4 所示: 第 15 页 共 20 页 图 4 发布功能的 MVC 架构 首先介绍 View 部分。在这里我用 Html 语言编写了一个留言框模板,这个 模板主要用于定义留言信息的显示格式。它由 Form 表单组成,其中用 “%标签名称%”标记出要动态显示的内容所在的位置,同时给 Form 表单的 ID 赋一个值,以便 Controller 调用。另外还使用 JavaScript 制作了一些实用 的前台动态效果,它们包括: (1)建立一些主要链接上的中文提示框; (2)支持在新的窗口打开用户插入的图片; (3)输出滚动显示的公告; (4)屏蔽脚本错误; (5)显示页面处理时间以及 PHP 运行时间等。 下面就给出留言发布界面的效果图(图 5): 第 16 页 共 20 页 图 5 留言发布界面 接着介绍 Controller 部分。在这里 ID 是 JavaScript 标签容器命名属性, innerHTML 表示一个容器内所包含的所有代码,通过“ID.innerHTML”就能够 在 JavaScript 中取得 View 部分所定义的留言框模板的代码。然后再通过 JavaScript 的 replace 方法与正则表达式结合应用,从而替换模板中的标签内 容,将留言信息插入到留言框模板中去。这种设计方法的好处在于客户端不用 刷新页面就能看到动态更新的内容,并且利用 JavaScript 语言将处理静态页面 的代码与处理动态页面的代码分离开,方便了程序员查找和修改程序。 最后介绍 Model 部分。在这里主要还是用 PHP 语言调用 MYSQL 数据库操作 类去实现四个功能:读取数据、搜索、分页和统计。要实现前三个功能就必须 执行不同的 SQL 语句。读取功能使用常规的“SELECTFROM”语句就能解决。 搜索功能需要在“SELECTFROM”语句后面再加上“WHERELIKE”语句, 通过判断前台表单所返回的搜索条件,从而筛选出要搜索的数据。分页功能学 要在 “SELECTFROM”语句后面加上“ORDER BYLIMIT”限制每页输 出固定条数的留言信息。统计功能只需要调用数据库操作类的成员函数就能实 现。 4.54.5 特色功能的设计与实现特色功能的设计与实现 首先介绍验证码功能。所谓验证码,就是将一串随机产生的数字或符号, 第 17 页 共 20 页 生成一幅图片,图片里加上一些干扰象素(防止OCR) ,由用户肉眼识别其中的 验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。使用这 项功能的好处还在于防止用户利用机器人自动灌水以及防止某些用户采用暴力 破解方式对管理员密码进行不断的登陆尝试。因此这项功能被应用在管理员登 入界面以及用户输入留言信息界面。 在本系统中实现了两种输出验证码的方法,在介绍这两种方法之前必需介 绍一下GD库。GD库是PHP处理图形的扩展库,它提供了一系列用来处理图片的 API,使用GD库可以处理图片,或者生成图片。因此第一种方法就是对于那些支 持GD库的空间,调用PHP的GD库函数来生成图像再搭配PHP的“RAND()”函数来 生成随机数最终制作出验证码。第二种方法就是对于不支持GD库的空间,系统 判别后将自动调用编写的256色BMP图像输出函数,自定义生成256色BMP图片。 然后在配合一个图像输出文件生成验证码。下面具体介绍一下第二种方法的实 现过程。 我们要让系统输出BMP图片就必需了解BMP文件的结构。BMP文件主要是由文 件头、位图信息头、颜色信息和图形数据四部分组成。在合理配置了文件头、 位图信息头、颜色信息后,将本系统要显示的验证码数据,即0到9和a到z共36 个字符的图形数据录入到BMP图像输出函数中,最后再使用三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 延边大学《环境流体力学》2023-2024学年第二学期期末试卷
- 江苏省无锡市玉祁初级中学2025届初三下学期中考试生物试题含解析
- 湖南省长沙市2025届高三下学期返校英语试题含解析
- 辽宁经济职业技术学院《涉外礼仪》2023-2024学年第二学期期末试卷
- 温州医科大学《电影批评》2023-2024学年第一学期期末试卷
- 食品经营许可证办理流程
- 2025设备租赁合同纠纷民事诉状起诉书
- 2025年招标师考试合同管理模拟题
- 2025塑料管材购销合同范本
- 给药治疗与护理
- 2025-2030中国保健品行业市场深度调研及竞争格局与投资研究报告
- 2025年江苏省无锡市锡山区中考英语一模试卷
- (二模)衢州、丽水、湖州2025年4月三地市高三教学质量检测 语文试卷(含答案解析)
- 宜昌市社区工作者招聘真题2024
- 水下潜水艇课件
- 糖尿病酮症酸中毒护理
- 36 阶段统计项目风险管理表甘特图
- 陕西气象部门招聘笔试真题2024
- 2025-2030中国电信增值行业运行状况与发展前景预测研究报告
- 学校中层干部选拔任用实施方案
- 2025年吉林铁道职业技术学院单招职业倾向性考试题库含答案
评论
0/150
提交评论