毕业论文——基于laravel框架的个人博客发布系统_第1页
毕业论文——基于laravel框架的个人博客发布系统_第2页
毕业论文——基于laravel框架的个人博客发布系统_第3页
毕业论文——基于laravel框架的个人博客发布系统_第4页
毕业论文——基于laravel框架的个人博客发布系统_第5页
免费预览已结束,剩余50页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

闽江学院本科毕业论文(设计)题 目基于laravel框架的个人博客发布系统学生姓名 _学 号 _系 别 软件学院 _年 级 _专 业 软件工程 _指导教师 _职 称 _完成日期 _摘 要本管理个人博客系统是的制作想法是因为目前大多的博客平台的写作方式以及博文的管理方式都太过于传统以及繁琐,所以我希望吧markdown这种写作方式带给大家,让大家可以感受到markdown这种写作方式带来的写作快感。也希望位自己制作一个新的写作平台,建档方便的写作平台。我希望搭建一个美观使用良好的博客系统,可以用来记录自己的平日的灵感或者是作为生活笔记。本人使用博客很长时间了,也深刻体会到一个博客系统对于一个技术人员的重要性。如果是一个程序员的话博客相当于是技术沉淀的一种方式。博客系统最重要的是记录方式,以及浏览的体验。使用markdown的好处就是我们不需要进行复杂的富文本编辑器的操作,只需要特定的字符就可以进行文章的排版。Markdown编译称html之后我们可以加入对应的样式表,可以做出我们想要的博客的样子。本系统还提供了博客的编辑以及修改删除的功能,让博客的博主可以快速的进行博客的管理,还提供了博客的评论的功能,让博客的浏览用户可以对博客进行评价,这样就能提供很好的交流方式。本系统的前端使用最新的组件化开发的方式,使用vuejs这个框架进行开发。前端单页应用和后端api分开,让耦合性大大的降低。这样前端和后端的开发可以完全的分开。Markdown编辑器使用的是editer.md这个开源的编辑器,可以很轻松的集成到网站中进行使用。关键词:laravel;博客系统;php;docker;mysql;B/S模式AbstractThis management personal blog system yes production idea because the present most blogging platform of writing and the way the post management is too traditional and trival, so I hope the markdown this way of writing to you, let you can feel the markdown this way of writing brings the pleasure of writing.Also hope to make you own a new writing platform, by inputting a convenient platform for writing.I hope to build a beautiful and use good blog system, which can be used to record their daily inspiration or as life notes.I use the blog for a long time, also deeply realized a blog system for the importance of a technician.If you are a programmer blog quite a way and technology precipitation.Blog system is the most important record, as well as the browsing experience.Using the advantage of the markdown is we dont need to do a complex operation, rich text editor only need specific character can be an article typesetting.Markdown compiled according to the HTML then we can join the corresponding style sheets, can make what we want the look of the blog.This system also provides the functionality of the edit and modify delete blog, blog can quickly manage the blog, also provides the function of blog comments, let blog browsing user can evaluate the blog, so it can provide a good way to communicate.The front of this system using the latest modular development way, using vuejs this framework for development.Front page application from the backend API, let coupling greatly reduced.This front end and back end development can be completely separated.Markdown editor using the editer. md, of the open source editor, can be easily integrated into the website to use.Keywords: laravel;blog system; PHP;Docker.Mysql;B/S mode目 录1、引言11.1 博客管理系统的意义11.2 博客管理方式以及写作方式的发展11.3 预期功能22、开发工具简介32.1 laravel简介32.2 MySQL32.3 包管理-composer42.4 vuejs43、系统可行性研究63.1 可行性分析63.2系统需求分析63.2.1 博客系统身份功能73.2.2 博客页面显示模块73.2.3 博客个人维护模块73.2.4 后台管理系统84、博客系统设计94.1 博客系统模块结构设计94.1.1 数据库的连接94.1.2 确定该系统要实现的功能104.2 博客功能模块设计114.3 博客数据库设计144.3.1 数据库结构144.3.2 数据库逻辑数据模型174.3.3 数据库的实现185、详细设计与实现225.1 详细设计概述225.2 读者用户功能实现225.2.1 读者用户注册页面225.2.2 用户登录235.2.4查看博客详细内容275.2.4 评论添加305.2.6 文章编写模块335.3 系统管理员后台345.3.1 后台数据管理345.3.3 后台管理员信息管理376、系统测试436.1 系统登录测试436.2 文章发表测试436.3 后台博客数据查看测试登录测试以及种类添加测试447、结束语467.1 感言467.2 不足及启发47致谢49491、引言1.1 博客管理系统的意义网络技术现在已经广泛的应用在我们的生活中了,以前的联系方式也正在改变,然而博客是一个非常重要的一个媒介。博客现在已经是一个大众交流的一个重要载体,我们可以通过博客记录我们自己的很多事情以及工作上的经验等等内容,网络博客十分方便我们去记录我们日常中需要记录的东西博客文章都是通过时间或者关注以及喜欢程度进行排列的,常见的是越多人阅读的博客就会月拍在前面。比如博客园中很多的博客都可以提供很多的专业知识以及专业的英文技术文章的翻译,也有个别大牛的日常生活也会有人围观,博客现在作为一个文字媒体收到了很多人的关注。博客给那些需要学习他人经验的人带了许多的便利,好学的人可以有很多的收获。1.2 博客管理方式以及写作方式的发展博客是一种人类写作在网上的一种方式,一般来说是通过经常更新的文章列表构成的,这些文章都是通过日期以及受关注来进行排序的。Blog的内容可以你是自己的的想法,也可以对于是某些事情的评价,或者是对你生活的分享,或者是你做的有趣的事情等等最近出现的新的博客写作方式markdown。Markdown可以看作是一种写作的编程语言,我们可以使用特殊的符号写出漂亮的文章。Markdown是一种新型的渲染型的写作方式,代表着一种极客的潮流。他简介的和易于入手的写作语法对比那些笨重的富文本工具,看起来清新有好用。Markdown现在最大的使用人群是码农,因为现在github的盛行,每个项目中都会用到readme.md来对项目进行说明。Markdown可以使用简介的语法书写复杂的文章,条理清晰而且易于观看。Markdown可以使用特殊符号来创建表格,分割线,图片,引用,列表等。现在也有很多开源的markdown编辑器可以使用,可以说是十分的方便。1.3 预期功能现在的博客系统最主要的还是写作的功能,写作必须舒适而且快速,这个是博客系统是否好用的一个关键因数。对于想最早的时候人们写的博客都是以日记的方式记录,这种方式在现在过于原始。本篇论文主要描述了开发实现博客关系系统的设计步骤,开发运用的那些工具以及所能实现的功能。(1)注册登陆,这里是让用户可以对本系统进行用户的注册,我们可以新建账号来使用系统(2)博客内容书写 博客内容的书写使用的是editer.md这个开源的html5的markdown编辑器,可以快速的尽心博客的编辑。(3)博客内容评论 博客评论是博主和博客浏览者的互动关键的功能。(4)博客内容修改 博客的修改时一个修订博客文章的手段,博文在发表之后如果存在错误就要进行必要的修改,以保证博客的质量。(5)博客内容删除 博客内容需要博主自己来进行管理,不需要的,或者需要删除的博客博主可以自行删除。(6)博客用户管理 博客用户会非常的多的,我们如果是管理员的话我们应该有一个平台来管理这些用户。(7)博客点赞 博客点赞是一个统计博客受欢迎程度的一个重要的环节(8)博客分类以及搜索系统 博客分类和搜索时一个博客博文系统友好度的关键,博客是然人来阅读的,需要有一个良好的分类系统以及搜索的模块来然用户进行搜索。(9)后台用户权限系统 后台系统需要进行权限分配,让管理员可以分派各个模块让不同的人进行管理。(10)前段组件化 前端的组件化可以让前端的单页面应用编程更加快速。(11)跨域api调用 由于这个后端只是提供api给前端使用,我们就要进行跨域登陆,来解决不同的域名api调用的问题。2、开发工具简介2.1 laravel简介laravel是一个以优雅为特点的开发框架,使用composer管理依赖包,各种依赖各种强大的包,使得laravel框架异常强大。在laravel中有一个高级的orm查询类库-Eloquent ORM,他能进行强大的数据库查询,比如关联查询以及各种复杂where查询,join查询。以及对表和php类的对象映射,这样可以满足程序员不用写sql语句就可以进行快速的sql查询。Laravel的控制器是十分的灵活可以直接在路由中进行声明,而且语法很优雅,具有很多亮眼的特性。这个路由的设计理念是可以有最大的灵活性,又不会失去作为可以构建大型企业应用的性能。2.2 MySQLMysql最早只是一些小型的互联网公司在使用,而现在越来越多的使用在大型的网站中了,也经受住了高并发的考验。Mysql是互联网公司最为喜爱的数据库系统,因为其社区的活跃以及开源的性质,是的mysql被广泛的修改以及使用。包括国内的bat都在使用mysql作为系统的数据库软件平台。而且mysql可以方便的搭建出读写分离的架构,可以快速的进行数据库的集群部署。而且还有很好的兼容性,可以再各个平台上面安装数据库,包括windows,unix以及各大linux系统2.3 包管理-composer由于composer 的出现php才会有一个统一的规范,使得不用一直造轮子。方便了PHP开发人员,也让php的代码越来越规范化。Composer提供了一个统一autoload的方案,使用的是psr3的规范,命名空间和文件加路径相互映射提供灵活的php文件的require方式。Composer还提供了一个远程的代码库,可以使用简单的命令就可以下载代码包到本地进行使用。这个代码库还可一和git以及svn等工具一起联动,可以讲git和svn的库当成代码包来使用。而且只需要简单的创建一个composer.json就可以进行代码包的管理以及下载。2.4 vuejsVue是一个组件化的解决方案,可以快速搭建组件化的网页,以及单页的应用。而且vue提供许多的第三方的包支持。我们使用vue可以进行方便的动态数据到界面的更新,这得益于vue提供的双向的数据绑定,我们可以直接操作对应的data数据就可以吧相应的改变显示在界面上。Vue这类框架的出现直接催生了web单页应用的热潮。Web单页应用的用户体验很好,现在的web都在网单页应用发展,一个像app一样的网页可以带来颠覆性的体验。Vue的组件化是通过利用js的元素的get和set方法来实现的,然后动态坚挺get以及set的变化来进行页面数据的渲染。我在项目中还是用了一个vue组件的路由框架 vue-route以及vue组件的外部数据管理框架vuex来搭建一个强大的web应用。3、系统可行性研究3.1 可行性分析博客系统是一个网络世界中很成熟的系统了,从最早的网络出现开始就有博客系统的存在。本博客系统前端使用vue框架进行组件化开发。使用的是前后分离的模式,前端在本系统中相当于一个应用,然后作为一个应用的身份对接后台系统api。系统的登陆认证方式是使用oauth2.0的方式进行,使用access_token的方式进行身份验证。使用access_token这种方式进行身份验证的好处是相对于传统的session方式更加灵活,并且很容易实现跨域的登录机制,使用cors的方式进行跨域。存储系统使用的是mysql关系数据库,对于用户数据以及博客数据可以进行完整的增删改查,使用mysql搭建mysql主从分离的实现性能的提升。由于没有多台电脑进行支持我使用轻量级的虚拟容器docker进行mysql主从的搭建。可以大大提升mysql的并发性能。因为这个博客系统是一个每个人都可以注册发布信息的系统所以必须有个后台来管理这些内容。对于系统后台对于美观度以及逻辑都不是要求很高,大多数都是尽心数据的管理。所以我选择了使用laravel的的一个开源的后台系统laravel-admin。这个系统可以快熟搭建一个完整的后台系统,对于快速开发很有用处。综上所述,系统的制作是完全可行的。3.2系统需求分析博客系统是一个集成书写和查看的系统。(1)用户博客书写功能 这个是这个系统最为关键的点;(2)用户的博客管理功能 可以对博客进行细致的管理 包括博文内容的详细修改,博客标题的修改,以及博文投稿类目的修改;(3)博客用户个人信息管理; (4)博客用户评论以及回复的功能;(5)博客用户点赞的功能 当喜欢文章的时候可以进行点赞 这个数据之后可以用来进行推荐使用;(6)超级管理员后台管理全部的博客;(7)超级管理员管理后台全部评论;3.2.1 博客系统身份功能个人博客发布系统有种角色:博客访问者及系统管理员。博客访问这包括博主以及游客,系统管理员可以内部进行分级,通过隐藏菜单进行分级。我们可以使用博客访问者的身份浏览博客的内容,通过博客系统管理员的身份进行博客内容的管理,可以管理博客的分类以及博客的评论等等内容。3.2.2 博客页面显示模块当网络用户进入某个人博客主页后没再该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。(1)用户可以分页查看对应评论信息;(2)用户可以针对日博客内容发表评论;(3)用户可以针对博客进行留言;(4)用户可以分类查看日志内容;(5)个人博客书写内容的显示;(6)个人以及全部博客列表的显示。3.2.3 博客个人维护模块这个模块用户让博主可以管理和维护自己的博客。博客个人维护该功能模块实现了如下几个子功能:(1)博客的详细内容管理;(2)评论及留言查看;(3)个人基本信息维护管理。这个模块让用户可以对个人博客中的内容进行修改,可以对博文的文章内容进行修改,以及查看博文的评论等等功能。前端系统流程图如下图3-1 所示:图3-1 系统流程图3.2.4 后台管理系统后台管理系统是一个收集博客数据以及管理博客数据的系统,对博客数据进行管理,对评论数据进行管理。维护博客以及网站的治安。下面是后台管理系统的登录流程以及后台管理系统的权限判断流程如图3-2所示: 图3-2 系统流程图4、博客系统设计4.1 博客系统模块结构设计4.1.1 数据库的连接数据库pdo链接配置前台是通过使用phero类库进行管理,使用配置文件记录数据库的链接参数。后台使用的是laravel的数据库类库进行数据库链接,配置文件在laravel项目根目录的.evn文件中进行配置下面是配置文件具体代码,位置在config.php文件中,代码如下所示:return database = master = dsn = mysql:dbname=blog;host=localhost,user = root,password = lerko,;下面是数据库链接的核心代码位于PdoWarehouse.php文件中,代码如下所示:/根据数据public function getPdo($pattern) $database_config = Config:config(database);$hit_classname = Config:config(hit_rule);if (empty($hit_classname) $hit_classname = PheroDatabaseRealizeHitRandomSlaveHit;$this-pdo_hit = new $hit_classname;$this-init($database_config);/注入后解析$this-inject();if (is_array($this-pdo)&!empty($this-pdoslave)&!empty($this-pdomaster) if ($pattern = 0) $pdo = $this-pdo_hit-hit($this-pdoslave); else $pdo = $this-pdomaster; else if(is_array($this-pdo)&empty($this-pdoslave)&!empty($this-pdomaster) $pdo = $this-pdomaster;else$pdo=$this-pdo;$charset = Config:config(hit_rule);$charset = empty($charset) ? utf8 : $charset;$pdo-exec(set names $charset);$pdo-exec(set character_set_client=$charset);$pdo-exec(set character_set_results=$charset);/PDO:ATTR_STRINGIFY_FETCHES 提取的时候将数值转换为字符串。 /PDO:ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。$pdo-setAttribute(PDO:ATTR_STRINGIFY_FETCHES, false);$pdo-setAttribute(PDO:ATTR_EMULATE_PREPARES, false);return $pdo;4.1.2 确定该系统要实现的功能个人博客系统是一个需要包含前台的博客发布以及后台的博文等内容管理的系统(1)用户博客书写功能 这个是这个系统最为关键的点;(2)用户个人博客管理功能 可以对博文内容进行管理,对博文内容进行编辑以及博文的投稿区域;(3)用户个人信息管理; (4)用户评论以及回复的功能;(5)用户点赞的功能 当喜欢文章的时候可以进行点赞 这个数据之后可以用来进行推荐使用;(6)超级管理员后台管理全部的博客;(7)超级管理员管理后台全部评论;(8)超级管理员后台管理全部种类;(9)超级管理员权限分配;(10)后台超级管理员资料编辑;(11)后台管理博客用户资料。4.2 博客功能模块设计系统的功能模块主要分为:系统管理员和博客书写用户。这两大模块又分别有许多细化的功能模块。前台包括如下模块:(1)用户信息管理模块;(2)个人博客的发布;(3)个人博客的管理;(4)个人博客的评论系统;(5)博文搜索模块;(6)博文排序标签模块。后台包括如下模块:(1)所有博客信息管理;(2)所有博客用户管理;(3)所有博客评论管理;(4)所有博客分类管理;(5)后台博客管理员权限分配;(6)后台博客管理员用户管理;(7)后台分级菜单管理。如下图 4-1所示:图4-1 系统模块图4.3 博客数据库设计4.3.1 数据库结构数据结构图的意义在于可以直观的看出数据库的大体结构,我们可以通过数据库结构图直接看出数据库的设计思路,这样的数据库结构图清晰易懂。数据库结构图的意义在于前期的设计可以有很大的设计价值。用户模型E-R图,如图 4-2所示:图4-2 用户E-R图种类模型图,如图所示 图 4-3所示:图 4-3 种类E-R模型博客实体模型E-R图,如图所示 图4-4所示:图 4-4 博客实体E-R图留言实体模型E-R如图所示 图 4-5所示。图 4-5 留言模型后台管理员模型E-R图,如图 4-6 所示:图 4-6 后台管理员Auth2.0数据模型E-R 图 4-7所示:图 4-7 Auth2.0数据表反应整个系统的模型之间关系的总的E-R图 如图4-8 所示:图 4-8 总er图4.3.2 数据库逻辑数据模型Er图模型只是一个概念化的数据库模型,和数据库实体只有逻辑上面的相似性。我们这里加入从er转化称具体的模型字段的描述。使用文字描述说明数据库表的详细信息。这里举出几个重要的表结构:系统数据库没有设置表的物理关系(1)博客表(博客id,内容,markdown原文,创建时间,更新时间,访问次数,喜欢次数);(2)用户表(用户id,用户名,用户密码,创建时间,更新时间,用户头像,电话,邮箱);(3)种类表(种类id,种类名称);(4)auth2.0验证表(访问id,用户id,链接id,激活标识,授权范围,生存时间);(5)后台管理员表(用户名,创建时间,信息更新时间,管理员头像路径,密码);(6)博客表(博客id,内容,markdown原文,创建时间,更新时间,访问次数,喜欢次数)。4.3.3 数据库的实现将E-R图转换称mysql可以识别和创建的表结构描述,标注相应的数据结构和相应的描述。(1)博客信息表:用于记录博客的内容 如表 4-1 所示4-1博客信息表字段名数据类型长度是否为主键描述idint11是博客id主键uidInt11否用户idmarkdownText否Markdown原文titlevarchar45否标题contentText否编译后的内容create_timevarchar45否创建时间update_timevarchar45否更新时间cat_IDInt11否种类idvisit_countInt11否访问总数tag_idint11否类型idlikeInt11否喜欢总数(2)用户信息表:用于记录用户信息 如表4-2 所示:4-2 用户信息表字段名数据类型长度是否为主键描述idint11是用户id主键usernameVarchar45否用户idpasswordVarchar45否用户密码head_imageText45否用户头像sextinyint1否用户性别create_timevarchar45否创建时间update_timeVarchar45否更新时间phone_numbervarchar(45)varchar(45)否用户电话emailvarchar(45)varchar(45)否用户邮箱(3)评论信息表:用于记录评论信息, 如表4-3 所示:4-3评论信息表字段名数据类型长度是否为主键描述idint11是评论id主键contentVarchar45否评论内容uidVarchar45否用户idblog_idInt11否博客的idref_comment_idInt11否关联的博客idcreate_timevarchar45否创建时间update_timeVarchar45否更新时间(4)Auth2.0验证数据记录表 如表所示 4-4所示: 4-4 Auth2.0的验证数据记录表字段名数据类型长度是否为主键描述idint11是id主键access_token_idVarchar45否Token的内容client_idVarchar45否链接idexpiry_timedatetime否过期时间user_idInt11否用户idscopevarchar45否授权范围revokeTinyint1否生存标识(5)种类信息表模型如表4-5所示: 4-5 博客种类表字段名数据类型长度是否为主键描述idint11是id主键nameVarchar45否种类名称(6)种类信息表模型如表4-5所示:4-5 博客种类表字段名数据类型长度是否为主键描述idint11是id主键usernameVarchar45否种类名称passwordVarchar45否管理员密码avatarVarchar255否管理员头像remember_tokenVarchar100否Tokencreate_atTimestamp否创建时间update_timeTimestamp否更新时间5、详细设计与实现5.1 详细设计概述详细设计的概述的为了描述出真个系统的细节和全貌,从点上描述整个系统的功能。这样后期可以更好的制作系统,使得整个系统的制作流程井井有条。我们可以从这个描述中看出所有功能的详细需求。详细设计概述讲述了整个设计流程以及设计的功能点,对整个系统的设计进行了阐述。整个系统的架构是由一个前端的单页应用以及一个后端的管理系统,还有一个api系统构成的,他们的关系如图 5-1 所示:图5-1 系统架构图5.2 读者用户功能实现5.2.1 读者用户注册页面当新的博客用户进入系统的时候,如果要发布自己的博文,那么就需要进行注册成为这个博客系统的博主。这样才能进行博客的发表。注册界面只需要填入用户名以及密码,密码需要重复两次,核对用户没有输入错误。如果输入正确系统就会提示博客的博主身份注册成功。这里密码的保存使用的是加盐的技术,能够防止如果数据库泄露之后用户的密码被破解或者识别。用户注册界面如图5-2所示:图5-2 用户注册注册的时候使用password_hash()这个php提供的加盐函数对密码进行加密,读者用户注册信息的核心代码在UserController.php文件中,如下:public function register(ServerRequestInterface $request,ResponseInterface $response,array $args)$parsedBody=$request-getParsedBody();$UserEntity=new UserEntity();$UserEntity-username=$parsedBodyusername;$UserEntity-password=password_hash($parsedBodypassword,PASSWORD_DEFAULT);$effect=$UserEntity-insert();if($effect)return new JsonResponse();elsereturn new JsonResponse(error_msg=注册失败,422);5.2.2 用户登录输入用户名以及密码,然后用户点击登录,登录成功的话系统就会跳转到首页提示登录成功。这里使用的是auth2.0的password验证登录方式,登录之后在页面中吧access_token(访问令牌)写入cookie,之后的请求都在http头上面写入相应的验证头,用来验证信息。如果浏览器携带的http头中包含的访问令牌是正确的话就可以正确的调用api。访问令牌的生存时间为1天,如果范文令牌失效了就要通过refresh_token重新获取。 如图5-3所示:图5-3登录系统界面登录流程图如图5-4所示。图5-4管理员登录流程图5.2.3 博客列表博客列表使用vue进行渲染,使用vuex对外部数据进行管理。这里如果删除博客的话页面不会进行刷新,直接将博客文章的入口从页面中去除。这个功能归功于vue的双向绑定技术,可以使得控制数据和页面的交互十分流畅。登录成功浏览博客的页面 图5-5:图5-5 博客浏览界面博客列表的代码在ArticleController.php文件中,从数据库中获取文章列表。如下:public function getFrontArticleList(ServerRequestInterface $request,ResponseInterface $response,array $args)$queryParam=$request-getQueryParams();$currentPage=$queryParamcurrentPage;$itemsPerPage=$queryParamitemsPerPage;$sortName=$queryParamsortName;$key_word=$queryParamkey_word;$tagId=$queryParamtagId;if($sortName=publish_time)$sortName=create_time;else$sortName=visit_count;$Blog=new BlogEntity();$entity=Tool:getInstanct()-Page($Blog,$currentPage,$itemsPerPage);if($key_word) / $userEntity=new UserEntity();/ $userEntity-whereEq(id,blog.id);$entity-whereLike(title,%.$key_word.%)-whereOrLike(markdown,%.$key_word.$);/ -whereOrExists(user.username,$userEntity);if($sortName=my) $entity-whereEq(uid,$request-getAttribute(user_id);if(isset($tagId)&!empty($tagId)$entity-whereEq(tag_id,$tagId);$data=$entity-order($sortName,DESC)-select();$xdebug_sql=$entity-sql();$result=data=;foreach ($data as $key = $value) $resultdata=_id=$valueid,title=$valuetitle,publish_time=Tool:getInstanct()-date_format_iso8601($valuecreate_time),like_count=$valuelike,comment_count=rand(1,50),visit_count=$valuevisit_count,images=ArticleDataAccess:getImageList($valueid),uid=$valueuid;return new JsonResponse($result);点击我的博客会出现自己发布的博客文章的列表,这些都可以进行编辑和删除,删除是异步进行的,可以直接将界面中的对应文章从界面中移除不需要进行界面的刷新。如图5-6所示:图5-6 我的博客tag5.2.4查看博客详细内容不管是游客还是博主都能查看博客内容,博客内容通过markdown渲染过后的html直接显示在页面上。这里显示的有读者的数量以及喜欢本片文章的数量还有评论的数量。如图5-7所示:图5-7 博客浏览界面查询博客内容信息的代码在在ArticleController.php文件中,如下代码所示:5.2.5 喜欢文章可以喜欢文章,这个用于统计文章的热度,如果评论数和阅读数量越高的文章排序就会在越前面,喜欢之后不能重复点击。如图5-8所示:图5-8 博客点赞界面点赞之后不能重复点赞。如图5-9所示:图 5-9点赞之后的界面点赞核心代码在ArticleController.php文件中,如下:/获取文章详细信息public function getFrontArticle(ServerRequestInterface $request,ResponseInterface $response,array $args)$Blog=new BlogEntity();$data=$Blog-whereEq(id,$argsid)-find();$Blog-visit_count=$datavisit_count+1;$Blog-whereEq(id,$argsid)-update();return new JsonResponse(data=_id=$dataid,title=$datatitle,publish_time=Tool:getInstanct()-date_format_iso8601($datacreate_time),like_count=$datalike,visit_count=$Blog-visit_count,comment_count=rand(1,50),content=$datacontent);5.2.5 查询博客内容可以查询博客内容,这里的查询可以对文章进行范查询,这里的查询文章内容使用了fulltext的全文索引,这样来增加查询文章的速度。文章查询前端使用的是自动查询,输入文字自动改变查询结果,分配的查询间隔时间为1秒。查询内容包括文章内容以及文章标题如图5-10所示:图5-10博客查询界面5.2.4 评论添加还可以对评论进行添加,添加评论之后直接显示在界面上。评论保存的是评论的时间以及评论人的id到数据库中。如图5-11所示:图5-11评论添加界面添加评论的核心代码在CommentController.php文件中,如下:/添加评论public function addNewComment(ServerRequestInterface $request,ResponseInterface $response,array $args)$param=$request-getParsedBody();$UserId=$request-getAttribute(user_id);$User=UserDataAccess:getUserInfoById($UserId);$CommentEntity=new CommentEntity();$CommentEntity-blog_id=$paramaid;$CommentEntity-content=$paramcontent;$CommentEntity-create_time=time();$CommentEntity-update_time=time();$CommentEntity-uid=$Userid;$effect=$CommentEntity-insert();if($effect)/返回评论数据return new JsonResponse(success=true,data=_v=0,_id=$CommentEntity-getLastId(),aid=$paramaid,content=$paramcontent,created=Tool:getInstanct()-date_format_iso8601($CommentEntity-create_time),replys=,status=1,updated=Tool:getInstanct()-date_format_iso8601($CommentEntity-update_time),user_id=_id=$Userid,nickname=$Userusername,avatar=http:/api-l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论