1、目录基于 ThinkPHP 的微博系统设计与实现 .i插图目录 iii表格目录 .iv1. 绪论 .11.1 项目设计背景及意义 11.2 微博系统的现状 11.3 论文组织结构 22. 相关知识及开发工具介绍 .32.1 PHP 语言简介 .32.2 ThinkPHP 技术简介 .32.3 MVC 模式简介 .43. 需求分析 .53.1 用例分析 53.3.1 用户用例 53.3.2 管理员用例 73.2 非功能需求 83.3 系统目标 94. 系统设计 104.1 概要设计 104.1.1 系统体系结构 .104.1.2 系统总体物理结构 104.2 详细设计 114.2.1 公共模块设
2、计 114.2.2 前台模块设计 114.2.3 后台模块设计 144.3 数据库设计 .164.3.1 数据字典 .164.3.2 ER 图 .185. 系统实现 205.1 系统运行环境与配置 205.1.1 硬件环境 205.1.2 软件环境 205.1.3 软件配置 205.2 系统的运行实现 215.2.1 发表博文 .215.2.2 好友博文 .225.2.3 关注好友 .235.2.4 系统推荐 .245.2.5 搜索博文 .255.2.6 系统设置 .256. 系统测试 276.1 测试计划 .276.2 测试结果 27总结 .30致谢 .31参考文献资料 .32附录 .33i
3、基于 ThinkPHP 的微博系统设计与实现文慧摘 要:随着中国 3G 技术的成熟和发展,中国移动互联网时代正拉开序幕。作为一种适应移动互联网的新兴的交流工具“微博”,如雨后春笋般发展,被誉为一场“正在爆发的互联网革命”。本论文提供了一款针对中国市场的多用户型微博系统。 本文针对目前国内主流微博产品所具备的主要特点和功能进行需求分析,设计、实现并测试了系统。系统主要由微博模块、话题模块、群组模块、好友模块等四大应用模块构成,采用 B/S 结构,基于 PHP 5.0 和 MySQL 5.0 作为开发环境,采用 ThinkPHP 三层架构进行开发。系统是一个功能完备的微博网站,可用于建站运行,也可
4、在此基础上方便地进行二次开发。系统管理员可以根据需要,对于系统灵活地进行各种配置,例如开闭用户注册、过渡关键词、系统名称等,方便建站。关键字:微博系统,B/S,PHP 5.0,MySQL 5.0,ThinkPHP2.0 三层结构iiDesign and Implement of Micro Blog System Based on ThinkPHPWen HuiAbstract: With the maturity and development of 3G technology in China, China mobile Internet age is started. Micro blo
5、g, as an communication tool extremely adaptable to the emerging mobile Internet, is developing like bamboo shoots after a spring shower, and is known as “an outbreak of the Internet revolution“. Through the software project progress, such as system requirement analysis, system design, implementation
6、 and testing, this paper analyses the production characters of Domestic mainstream micro blog websites and develops the system.Micro blog system is mainly composed of four modules, such as micro blog module, topic module, group module and follow module, and choose B/S structure and the tree-level st
7、ructure of ThinkPHP to develop this system, based on the development environment of PHP5.0 and MySQL 5.0.This system is a fully functional micro blog website, which can not only be used to set up websites, but also be used for re-development. Administrators can set the system, such as opening or clo
8、sing register function, filtering illegal words or not, and changing system name etc.Key words: micro blog platform system, B/S,PHP 5.0,MySQL 5.0, three layers structure of ThinkPHP 2.0iii插图目录图 1- 1 2010 年上半年微博访问量统计 .1图 1- 2 我国微博的发展历程 2图 2- 1 MVC 模型 .4图 3- 1 用户用例图 5图 3- 2 管理员用例图 7图 4- 1 微博系统网络拓扑图 11
9、图 4- 2 关注好友时序图 13图 4- 3 浏览个人主页时序图 13图 4- 4 系统推荐时序图 14图 4- 5 微博设置功能时序图 15图 4- 6 数据库 ER 图 .19图 5- 1 发表博文 22图 5- 2 成功发表博文 22图 5- 3 关注博文界面 23图 5- 4 关注他(她)界面 24图 5- 5 取消关注界面 24图 5- 6 推荐功能界面 24图 5- 7 搜索博文界面 25图 5- 8 系统参数界面 26图 5- 9 微博设置界面 26图 5- 10 防灌水设置界面 26图 5- 11 邮箱设置界面 26iv表格目录表 4-1 表格清单 16表 5- 1 硬件环境
10、 20表 5- 2 软件需求 20表 6- 1 测试计划表 27表 6- 2 测试结果 2711. 绪论1.1 项目设计背景及意义2009 年随着 3G(3rd-generation)技术的成熟和牌照的发放,正式拉开了中国移动互联网时代的序幕。作为新生事物的“微博” ,以其简单易用性、广泛的影响力、快速传播力等,迎合了互联网时代的发展,迅速成为了互联网新兴起的一种集成化、开放化的互联网社交服务,被誉为一场“正在爆发的互联网革命” 。2010 年国内微博迎来发展的春天。微博像雨后春笋般崛起,新浪、搜狐、网易、腾讯、凤凰、和讯、搜房等综合门户均开始推出微博产品。虽然只有几年时间,但中国微博用户量发
11、展迅猛,据上海交通大学舆情研究实验室近日出炉的2010 中国微博年度报告显示,目前中国微博活跃用户数量仅 2010 年上半年就已从一千万增至一千二百万,如图 1-1 所示:图 1-1 2010 年上半年微博访问量统计但是,一方面与社区交友网站以及博客等周覆盖人数上亿人的用户规模相比,大多数网民还没有设立自己的微博,微博还不够普及。中国微博市场尚处于用户培养期,用户粘性和用户行为延续性都还需要进一步提高。国内微博市场的巨大潜力还有待开发。另一方面虽然目前已有初步成熟的微博平台,但这些微博平台多是娱乐型性质,针对某一特定领域的内容型、应用型和商务型微博还未有足够发展。微博系统在此背景下应用而生,它
12、实现了目前多数微博系统所具有的基本功能,提供了一个便捷、开放、可独立部署和运营的微博平台建站系统和解决方案,并有助于在此基础上针对某一特定领域进行二次开发 1,2。1.2 微博系统的现状目前国内主流网络所推出的微博产品无一例外都在学习 Twitter 的微博结构。因为本地微博是提供中文语言服务,增强了国内微博的互操作性,将比 Twitter等国外微博产品更容易吸引中国用户。本地微博的发展经历了三个阶段:引入2期、沉寂期和成长期,如图 1-2 所示:图 1-2 我国微博的发展历程引入期:2007 年,是我国微博发展的引入期。这一时期的微博以独立微博网站为主体。2007 年 5 月建立了饭否网,开
13、启了中国的微博时代。随后不久,叽歪网、做啥网相继上线,拥有数亿用户的腾讯也于 2007 年 8 月 13 日推出了腾讯滔滔。沉寂期:从 2008 年至 2009 年,国内微博客发展进入了一年的沉寂期。期间,没有新的微博服务商出现,用户规模增幅也不大。成长期:从 2009 年 8 月开始,国内微博焕发出新的活力。大量微博网站相继上线,用户规模激增,微博成为我国互联网发展的新的热点。国内微博发展进入了快速成长期。2010 年可谓是中国的“微博元年” ,各主流网站纷纷主推自己的微博产品,使微博了在中国有了空前发展。但与 Twitter 的实质性相比还处于早期发展阶段。Twitter 即可为个人用户发
14、表每日心情,也可以提高为企业宣传的内容信息。但目前国内微博还是以个人用户为主,发布内容还没有呈现多样化趋势,也就很难催生出产业化的资源。总而言之,目前国内微博还处于发展初期,以娱乐性的内容为主,还有待向内容多元化和商业化方向发展3,4。1.3 论文组织结构第一章:介绍项目的背景及意义、微博系统的现状。第二章:介绍相关系统特点、关键技术等相关知识及开发工具介绍。第三章:对微博系统考查,进行总体的需求分析,通过用列分析详细说明微博系统的功能需求和非功能需求。第四章:对微博系统进行概要设计、详细设计及数据库设计。第五章:展示微博系统的各个页面实现情况。第六章:进行系统测试,首先进行测试分析,然后写出
15、测试方法,最后给出测试结果。最后一部分用来进行小结、致谢并列出参考文献,附录部分主要包括对各个部分的截图。32. 相关知识及开发工具介绍2.1 PHP 语言简介PHP(Hypertext Preprocessor),是一种 HTML(Hyper Text Mark-up Language)内嵌式的语言,是一种在服务器端执行的嵌入 HTML 文档的脚本语言,语言的风格有类似于 C 语言,被广泛的运用。 PHP 独特的语法混合了 C、Java 、Perl 以及 PHP 自创新的语法。PHP 安装它可以比 CGI(Common Gate Interface)或者 Perl 更快速的执行动态网页。用
16、PHP 做出的动态页面与其他的编程语言相比,PHP 是将程序嵌入到 HTML文档中去执行,执行效率比完全生成 HTML 标记的 CGI 要高许多;PHP 还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP 具有非常强大的功能,所有的 CGI 的功能 PHP 都能实现,而且支持几乎所有流行的数据库以及操作系统。至 PHP5.0 版本时,PHP 已经非常全面地支持面向对象的设计思想。PHP由于代码开源免费、开发快捷高效、跨平台性强等特点,已经成为 WEB 开放主流脚本语言之一,近年来已经出现以 PHP 技术为核心的大型商业应用案例。故本系统根据系统特点决定采用 PHP 作
17、为开发语言5。2.2 ThinkPHP 技术简介ThinkPHP 是一个性能卓越并且功能丰富的轻量级的开源 PHP 框架, 是为了简化企业级应用开发和敏捷 WEB 应用开发而诞生的。ThinkPHP 框架有以下特性:1. 简单易用的 MVC 模式:模型(M):模型的定义由 Model 类来完成。Model 类位于项目目录下面的 LibModel 目录。控制器(C):应用控制器(核心控制器)和 Action 控制器都承担了控制器的角色,区别在于 Action 控制器完成业务过程,而应用控制器(App 类)负责调度控制。 Action 控制器位于项目目录下面的 LibAction 目录。 视图(V
18、):模板的实现是和框架无关的,做到了100分离,可以独立预览和制作。模板目录位于项目目录下面的 Tpl 目录。2. 编译机制:ThinkTemplate 是一个使用了 XML 标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。3. 模型自动验证和处理:系统内置了数据对象的自动验证功能,而大多数情况下面,数据对象是由表单提交的$_POST 数据创建。需要使用系统的自动验证功能,只需要在 Model 类里面定义$_validate 属性,是由多个验证因子组成的数组,支持的验证因子格式:验证字段,验证规则,错误提示,验证条件,附加规则,验证时间。4.
19、 模板引擎:系统内建了一款卓越的基于 XML 的编译型模板引擎,支持两种类型的模板标签,融合了 Smarty 和 JSP 标签库的思想,支持标签库扩展。4通过驱动还可以支持 Smarty、EaseTemplate、TemplateLite、Smart 等第三方模板引擎。5. AJAX 支持:内置 AJAX 数据返回方法,支持 JSON、XML 和 EVAL 格式返回客户端,并且系统不绑定任何 AJAX 类库,可随意使用自己熟悉的AJAX 类库进行操作6 。2.3 MVC 模式简介MVC 模式(Model-View-Controller,模型视图控制器模式)是软件工程中的一种软件架构模式。它把软
20、件系统分为三个基本部分:模型(Model) ,视图(View)和控制器(Controller ) 。MVC 的结构如图 2-1 所示:ModelViewControlerNotifyUser ActionUpdateUpdate图 2-1 MVC 模型说明:模型(Model):模型包含了应用问题的核心数据、逻辑关系和计算功能,它封装了所需的数据,提供了完成问题处理的操作过程。控制器依据 I/O 的需要调用这些操作过程。模型还为视图获取显示数据而提供了访问其数据的操作。模型为视图获取显示数据提供了访问其数据的操作。为了实现这种机制,用于监视此模型的视图必须事先在此模型上注册,从而视图可以了解在数
21、据模型上发生的改变。视图(View):视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。视图通过显示的形式,把信息转达给用户。不同视图通过不同的显示,来表达模型的数据和状态信息。每个视图有一个更新操作,它可被变化- 传播机制所激活。当调用更新操作时,视图获得来自模型的数据值,并用它们来更新显示。控制器(Controller ):控制器处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工
22、作的部件。通常一个视图具有一个控制器。53. 需求分析3.1 用例分析3.3.1 用户用例用户用例图如图 3-1 所示。与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与与 与与与与与与与与与与与与与与与与与与与与与与与与与与与与 图 3-1 用户用例图6用例描述:名称、标识符关注好友功能功能描述 关注好友,获取好友最新博文动态性能 当用户点击“关注他(她) ”按钮时响应时间与与与与与与与与与与与与8图 3-2 管理员用例图 用例描述:名称、标识符微博设置功能功能描述 管理员配置微博系统的相关信息,例如微博名称、关闭用户注册等。性能 信息处理时间*?.*?si“,“(rn
23、s)“,“()“); /定义过渡 script 脚本、回车换行符、空白符等内容 $replace = array (“,“,“);/定义替换内容为空return preg_replace ($search, $replace, $content);/利用正则表达式将$content中所匹配内容替换133. 管理用户信息管理用户信息主要功能是维护用户相关的信息。在管理用户信息模块中,分为基本信息、头像设置、推荐自己等三个子模块。基本信息模块用于对用户昵称、积分、性别和自我介绍等信息的显示与维护,其中自我介绍限定 140 字,用户昵称限定 10 个字以内的数字、字母和汉字的组合。头像设置用于上传并
24、修改用户头像。其中,推荐自己功能,可以将用户设置成为推荐好友,同时扣除一定积分,系统将用户放置到查找好友模块的推荐好友中。4. 管理好友管理好友包括关注好友(时序图如图 4-2 所示)以及取消关注两项功能。关注好友功能向用户提供对其它用户进行关注其微博动态的功能,被关注者的微博信息将显示在关注者的最新博文以及好友博文中。5. 查找好友查找好友向用户提供用户信息以便用户查找关注好友的功能,包括向推荐好友和最新用户两大模块。其中,推荐好友在管理用户信息中设置。6. 管理博文管理博文主要功能是向用户提供对博文进行的各种相关操作。在管理博文中,分为发表博文、删除博文、评论博文、评价博文等五项功能。其中
25、,发表微博功能用于已登录用户发表微博,其中微博可含有表情、分享、图片、话题等内容。评论博文功能用于已登录用户对博文进行评论。评价功能,用于已登录用户对博文进行顶、踩、路过等评价。删除博文和评论需扣除一定积分。7. 管理话题话题模块包括发表话题博文、浏览话题列表、浏览话题博文。8. 管理群组管理群组向用户提供针对某一特定主题长期进行交流的群组功能,包括浏览群组列表、浏览群组博文、发表群组博文三项功能。浏览群组列表功能是显示本系统所有的群组列表信息。浏览群组博文用于对特定系统群组读取并显示与该群组相关博文。9. 浏览个人主页浏览个人主页(时序图如图 4-3 所示) ,主要包括查看用户个人基本信息,
26、例如头像、账号、个人主页地址等,以及关注者的最新微博动态。10. 查看系统首页查看系统首页,主要包括查看系统推荐(时序图如图 4-4 所示)和浏览最新微博。其中,系统推荐为向用户推荐最热博文、最热话题、活跃用户以及用户关注排行。最新微博,包括自己和关注者的最新微博动态。14User HomeView FolowAction FolowModel Datbase2: adFolow 3: adFolow4: modify1: adFolow5: return图 4-2 关注好友时序图Client IndexAction HomeView UserModel BlogModel Datbase1:
27、 home2: getUserBaseInfo4: asign userBaseInfo5: getFolwingBlogs 3: query6: query7: asign folwingBlogs8: return图 4-3 浏览个人主页时序图15Client PublicActionRecomendView UserModel BlogModel TopicModel Datbase1: recomend 2: getActiveUsers5: getTopFolwedUsers8: getHotBlogs1: getHotTopics3: query6: query9: query12
28、: query4: asign activeUsers7: asign topFolwedUsers10: asign hotBlogs13: asign hotBlogs14: return图 4-4 系统推荐时序图4.2.3 后台模块设计1. 管理用户管理用户向管理员提供查看和管理用户的相关信息功能,包括删除用户、审核用户、授予权限、增加用户等功能。如果系统配置中注册审核功能开启时,则只有当管理员审核用户后,该用户权限才升为普通用户;否则未审核用户只有登录、浏览等权限,无权进行发表微博、评论等操作。本系统角色仅有普通用户和管理员两种,授予权限可变更用户角色。2. 设置系统配置设置系统配置包
29、括系统参数、微博设置(时序图如图 4-5 所示) 、积分设置和防灌水设置四项功能。系统参数功能用于查看服务器系统参数情况,例如操作系统类型、服务器域名、服务器剩余空间等。微博设置功能主要用于配置微博系统参数,例如系统名称、系统描述、启闭邀请注册功能、默认积分等。防灌水设置主要用于防止恶意用户操作行为,包括配置是否启用人工审核、邮箱激活、同 IP 注册受限时间、新用户发言受限时间等参数。积分设置功能查看管理积分用例描述。3. 管理群组管理群组的主要功能是对群组进行查看、修改和新增等管理。群组由管理员为针对某一特定主题的群体所创建,并可修改群组名称、群组头像等群组信16息。4. 管理博文管理博文的
30、主要功能是对用户博文进行浏览、审核、删除等管理操作。当博文内容涉及政治、色情等非法信息时,管理员可对某进行删除操作。如果系统配置中审核博文的功能启用,则博文需管理员审核才为其它用户所见。5. 管理话题管理话题的主要功能是对话题内容进行查看并修改话题、新增话题等管理操作。由于已注册并登录用户都有权发表新话题,从而会导致话题不规范、同一话题多种表述等情况,故管理员有修改不规范话题的操作权限。新增话题用于引导和新增一些热门话题的讨论。6. 管理积分管理积分包括积分设置和管理积分日志等两项功能。积分设置是设置积分项值、启用情况等积分系统配置。积分配置项中有三项加分操作:登录系统、发表微博、发表回复,以
31、及二项减分操作:删除微博和删除回复。积分系统配置可灵活配制各项增减分值。积分日志用于记录用户增减积分记录,系统管理员对其有删除操作权限。当日志记录删除时,用户该项积分也将被扣除。 Client BlogSysSetViewSystemSetAction SystemPropertyModel Datbase2: getBlogSysProperties 3: query6: setBlogSysemSet 7: saveBlogSysProperties8: modify1: getBlogSystemSet4: asign blogSysProperties5: return9: asign
32、 blogSysProperties10: return图 4-5 微博设置功能时序图174.3 数据库设计4.3.1 数据字典微博系统需要管理的内容包括用户、积分、微博、评论、话题、群组、好友等微博系统信息,以及管理员、微博设置、积分设置、邮箱设置等后台管理系统信息。微博系统采用 MySQL 数据库作为数据存储,因为 MySQL 是一个开放源码的小型关联式数据库管理系统,具有普及性、简单性、低成本、良好支持、灵活性和可扩展性等特点,与本系统采用的 PHP 开发语言有着良好的融合,是一般 Web 系统的经典配置。通过对系统信息进行分析,可以得到微博系统的数据库信息特点:1.本系统用户分为普通用
33、户和管理员用户,分别用于使用本系统以及管理本系统。2.只有普通用户经验证后可以操作对本系统进行所有操作,而未注册用户只能浏览微博、话题等相关信息。3.用户具有微博管理、话题管理、好友管理、个人信息管理等功能需求。管理员具有微博管理、话题管理、群组管理、用户管理、积分管理等功能需求。在数据库信息特点的基础上,可以得到表格清单如下表 4-1 所示:表 4-1 表格清单名称 代码管理员 Admin用户 user博文 blog话题 Topic话题_博文 Topic_blog话题组 Group附件 Attention积分 Score角色 Role用户_角色 User_role角色_权限 Role_per
34、m权限 Permission操作 Option资源 Resource系统属性 Sys_property关注好友 follow以下是每个清单的数据字典:1.管理员含义说明:描述管理员的性质组成:adminID、account、password、login_ip、login_time、create_ip、create_t18ime2.用户含义说明:描述用户的性质组成:userID、account、password、mail、homepage、icon、score、login_ip、login_time、create_ip、create_time3.博文含义说明:描述用户的性质组成:blogID、c
35、ontent、step_count、pass_count、reply_count、status、create_time、create_user备注:create_user 是 user 的外键4.话题含义说明:描述话题的性质组成:topicID、content、create_time、create_user备注:create_user 是 user 的外键5.话题_博文含义说明:描述话题和博文之间的关系组成:topicID、blogID、blog_count备注:topicID、blogID 是外键6.话题组含义说明:描述话题讨论组的性质组成:groupID、group_name、sort_i
36、ndex、icon、create_time、is_default、create_admin备注:create_admin 是 admin 外键7.附件含义说明:描述博文上传相关附件的性质组成:attentionID、type、create_time、blogID备注:blogID 是 blog 表的外键8.积分含义说明:描述用户相关积分的性质组成:scoreID、type、number、option、create_time、userID备注:userID 是 user 表的外键9.角色含义说明:描述系统角色的性质19组成:roleID、parentID、role_name、role_desc1
37、0.用户_角色含义说明:描述用户和角色之间所属关系的性质组成:userID、roleID备注:userID 是 user 表的外键,roleID 是 role 表的外键11.角色_权限含义说明:描述角色和权限之间关系的性质组成:roleID、permID、create_time备注:roleID 是 role 表的外键,permID 是 permission 表的外键12.权限含义说明:描述用户权限的性质组成:permID、perm_name、perm_desc、optionID、resourceID备注:optionID 是 option 表的外键,resourceID 是 resource
38、 表的外键13.操作含义说明:描述用户操作的性质组成:optionID、option_name、option_desc14.资源含义说明:描述系统资源的性质组成:resourceID、resource_name、resource_desc15.系统属性含义说明:描述用户的性质组成:key、value16关注好友含义说明:描述关注者与被关注者之间的关系组成:followID、followee、follower备注:followe 和 follower 是 user 表的外键4.3.2 ER 图通过对数据库进行需求分析后,利用 PowerDesigner 对数据库的逻辑模型进行设计,如图 4-6
39、所示,实体中元素均略去。201,n1,ncontain_atten_relgroup_blog_rel create_group_reluser_topicuser_scoreuser_invateparentIDperm_opt perm_rsrcrole_permuser_role1,n1,npublish_blogblogblogID IntegerIdentifier_1 scorescoreID Integer Identifier_1 topictopicID IntegerIdentifier_1 useruserID Integer Identifier_1 attention
40、attentionID Integer Identifier_1 inviteinviteID Integer Identifier_1 groupgroupID IntegerIdentifier_1 sys_propertypropertyID Integer Identifier_1 adminadminID Integer Identifier_1 permissionpermID Integer Identifier_1 resourceresourceID Integer Identifier_1 roleroleID Integer Identifier_1 topic_blog
41、blog_count IntegeroptionoptionID Integer Identifier_1 follow图 4-6 数据库 ER 图215. 系统实现5.1 系统运行环境与配置5.1.1 硬件环境硬件环境如表 5-1 所示:表 5-1 硬件环境需求名称 详细要求CPU Intel(R) Core(TM)2 Duo CPU P7370 2.00GHz内存 2GB硬盘 320GB网卡 10M/100M光驱 无要求软驱 无要求显示器 无要求5.1.2 软件环境软件环境如表 5-2 所示:表 5-2 软件需求需求名称 详细要求操作系统 Windows 98/2000/xp/2003、L
42、inuxWEB 浏览器 IE6.0、IE7.0、opera、Maxthon编程语言 PHP 5.0开发平台 EditPlus 4.0, Zend Studio 7.0服务器 Apache 2.0数据库设计工具 Sybase Power Designer 10.0数据库 MySQL 5.0建模工具 Rational Rose5.1.3 软件配置为了正确地部署和运行系统,需要对系统进行软件的配置。路径配置存放于项目根目录下 index.php 文件中,主要用于定义框架类库、项目名称、项目路径,并启动框架入口。Index.php 中代码如下所示:22项目信息配置存放在项目中/Conf 目录下 con
43、fig.php 文件中,主要包含数据库连接信息,图片、头像等目录路径信息,缓存设置信息,用户验证标识信息等项目配置信息。config.php 中代码如下所示:5.2 系统的运行实现本系统实现了前台系统和后台系统二个子系统。前台系统所实现的功能有:登录/注册、博文模块、系统推荐、话题模块、好友模块、群组模块、系统首页、个人首页、用户信息管理等八个功能模块。后台系统实现了登录/注销、登录用户管理、群组管理、系统配置、积分管理、博文管理和话题管理。现以博文模块中的发表博文、好友博文,好友模块中的关注好友,系统推荐等为例,说明前台系统实现。以系统设置模块为例,说明后台系统实现。5.2.1 发表博文发表
44、博文,如图 5-1 以及 5-2 所示,可以插入表情、链接、图片和话题;并有限制博文字数的检测功能。当博文发表框加载完毕时,JS 中的countWords、addFace、shareLink、addTopic、onAddBlogSubmit 等方法分别对博文输入框、表情链接、分享链接、图片链接、话题链接以及博文提交按钮进行绑定事件。当点击“侃一下”时,onAddBlogSubmit 检验博文字数是否为空或超过 140 字,如果检验成功,则利用 AJAXRequest 请求 BlogAction 中的return array(/配置项= 配置值APP_DEBUG=false,DB_TYPE=my
45、sql, /数据库类型DB_HOST=127.0.0.1,/数据库 IPDB_NAME=vblog,/数据库名称DB_USER=root,/数据库用户名DB_PWD=,/数据库密码DB_PORT=3306,/数据库端口 一般默认DB_PREFIX=vblog_,/数据表前缀TMPL_CACHE_ON=TRUE, / 模板缓存是否开启USER_AUTH_KEY=onLineUserID, / 用户验证标识URL_CASE_INSENSITIVE=true, / URL 字符大小写敏感ERROR_PAGE=/404.html,ATTACHDIR=APP_PATH./images/face, /头像
46、地址ATTACHSIZE=2097192, / 附件大小ATTACHEXT=jpg,gif,png, / 附件类型THUMBMAXWIDTH=200, / 图片最大宽度THUMBMAXHEIGHT=200, / 图片最大高度THUMBSUFFIX=_thumb, / 图片前缀名AVATAR=APP_PATH./images/face/, / 头像存储地址TMPL_PARSE_STRING=array( / 模板中解析字符串变量system_images=APP_PATH./images,);define(THINK_PATH,./ThinkPHP); /定义 ThinkPHP 框架类库位置de
47、fine(APP_PATH,www); /定义项目系统根目录define(APP_NAME,www); /定义项目名称require(THINK_PATH.“/ThinkPHP.php“);/引入 ThinkPHP 框架核心类文件App:run();/ 运行 ThinkPHP 框架23AddBlog 方法。该方法中,调用公共模块中函数 filterSpecial 过滤 script 标签以及处理 HTML 标签,并调用 filterLegalWords 过滤非法词汇。处理过的BlogAction 创建 BlogModel 类,用 addBlog 方法进行处理,如果操作成功,则返回博文 ID。B
48、logAction 中调用 parseTopics 抽取话题并返回话题数组,若存在话题,则创建 TopicModel 中 insertTopic 将话题插入。接着 BlogAction 调用公共函数 HTML_getBlog 进行博文处理,并将博文 HTML 片段返回给AJAXRequest 进行显示。若出错,则将错误信息返回进行报错。Action 查询addBlog 关键代码如下所示:图 5-1 发表博文图 5-2 成功发表博文5.2.2 好友博文 好友博文模块位于个人主页中部左侧,使用 iframe 异步加载和显示好友博文动态, 如图 5-3 所示。浏览器向 IndexAction 的 h
49、ome 方法提出请求,请求中包含页号参数,否则默认页号为 1,访问的 URL 地址例如:/index/home/p/2。Home 方法中通过公共模块 getUserID 方法获取当前用户ID,创建 BlogModel,并调用 getFollowingBlogs 获得被关注者的博文动态。Home 方法将被关注者的博文信息传至 view,并由 view 将数据填装至followedBlogs.tpl 中,并返回客户端。$data_auserID = $uid;$data_agroupID = $gid; $data_acontent = $content; $data_acreate_time = time();$data_astatus = getSystemProperty(verifyPublishBlog);/获取系统默认发表微博审核状态$this-startTrans();/ 开启事务$TBlogID = $thi