基于laravel框架的新闻发布系统的设计

2019-10-08 11:55阮卫华何正焱
软件 2019年8期

阮卫华 何正焱

摘  要: 近年来,随着互联网的兴起和高速发展,信息量呈现出爆炸式的增长,人们对信息资讯的需求也在不断地增加,传统媒体越发站不住脚跟,纷纷拥抱互联网新媒体。本论文据此提出了新闻发布系统的设计与开发,在现有系统的基础上进行考察、分析,旨在设计开发出现代化的新闻发布系统,探讨新闻发布系统的可发展方向。对国内外新闻发布系统的发展现状进行了详细的分析对比之后,摈弃传统的人工管理方式,采用基于PHP和MySQL的动态页面静态化等技术实现新闻文章的自动化管理。并采用laravel框架将后台视图层和数据模型分离隔离,专注业务逻辑。同时,本系统经过对比“Google News”与“网易新闻”等多家新闻网站,总结了“网易新闻”网站在多设备适配问题上与其他网站的不同以及国内外新闻内容来源的区别之后,使用HTML5的多个新特性以及Bootstrap前端框架实现网站的响应式布局,实现“用户自主上传新闻”创新模块。

关键词: 新闻发布系统;响应式布局;PHP;laravel

中图分类号: TP311.52    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.08.013

本文著录格式:阮卫华,何正焱. 基于laravel框架的新闻发布系统的设计[J]. 软件,2019,40(8):5961+65

【Abstract】: In recent years, with the rise and rapid development of the Internet, the amount of information has shown explosive growth, and people's demand for information is also increasing. Traditional media are increasingly unable to stand on their feet, and they are embracing new Internet media. This paper puts forward the design and development of the press release system, on the basis of the existing system to investigate, analysis, in order to design and develop a modern press release system, to explore the development of the press release system. After the detailed analysis and comparison of the development status of news release system at home and abroad, the paper abandons the traditional manual management and adopts the static technology of dynamic pages based on PHP and MySQL to realize the automatic management of news articles. Laravel framework is adopted to separate background view layer and data model and focus on business logic. At the same time, this system through comparing "Google News" and "netease News" and so on several News websites, summed up the "netease News" website on more equipment adaptation problem is different from other web sites, and the difference between domestic and foreign News sources, use multiple new features in HTML 5 and Bootstrap front-end framework implements the response of the site layout, implement the "user uploaded to News" innovation module.

【Key words】: News publishing system; Responsive layout; PHP; Laravel

0  引言

傳统的新闻网站采用静态信息发布,仅仅是新闻查阅者单方面从网站获取网站信息,无法达到互动的目的[1]。而随着互联网的兴起和发展,静态站点的开发与维护正在变得越来越困难。一方面信息在不断地增加与变化,使得站点维护人员不得不经常修改代码;另一方面由于静态网页不能达到与新闻查阅者有效交互的目的,使得人们感到越来越无趣,从而降低新闻网站的浏览量。

当前的大多数新闻网站采用基于数据库的动态页面来实现文章发布系统。这在一定程度上解决了维护困难的问题。但是,当数据堆积起来后,用户的查阅体验会因访问速度越来越慢而受到极大的影响。因此,使用动态页面静态化技术将动态页面生成对应的静态页面,可以使用户的查阅体验大大提升。此外,人们的生活节奏正在加快,对新闻资讯的需求已经不仅仅止于重大新闻[2]。越来越多的人对身边发生的小事感兴趣,而传统新闻行业单方面向新闻查阅者传播新闻的模式显然已经不能满足当前人们的需求[3]。

1  基于laravel框架的系统架构

1.1  laravel框架简介

laravel简洁、优雅的特性,使得在书写代码的过程中,系统的代码实现流程得以简化。与此同时,其对RESTful的良好支持对本系统前后端分离的实现有着很大的帮助。同时laravel的设计思想是当前所有主流的PHP框架中最先进的,非常适合应用各种开发模式。如IoC容器、依赖注入等[7]。其对com-poser的良好支持使得项目依赖的管理更为简便,在整个系统开发的流程中,起到至关重要的作用。

1.2  系统特点及其架构

1.2.1  系统逻辑分析与结构设计

系统从逻辑上可划分为新闻的前端展示页面和管理员的后台管理页面。前端展示页面为新闻查阅者提供了新闻文章页面,供其查阅新闻信息;后台管理页面为后台管理员提供了后台新闻信息管理页面,供其管理新闻信息。

通过对系统的逻辑分析,决定将系统分为前端展示系统和后台管理系统两个相互独立的子系统。其中,前端展示系统对所有用户开发,任何人均可访问前端展示系统进行新闻信息的查阅。而后台管理系统只对指定的管理人员开发,后台管理员只能通过在浏览器输入隐藏的管理员入口地址,才能进入管理员登录页面。输入管理员信息,系统自动与数据库的数据进行校验,校验通过后,才能进入管理员系统。系统结构图如图1所示。

1.2.2  服务器的架构设计

后台服务器使用Nginx实现反向代理和负载均衡,使用一台主机作为负载均衡服务器,两台主机作为web服务器。用户的请求首先发送到负载均衡服务器上,负载均衡服务器再以轮询方式将请求轮流分散到两个web服务器上,以减小服务器的访问压力。如图2所示。

2  API接口设计在本系统中的应用

本系统将前端的视图页面和后端的业务逻辑分离开来,使用了API接口在不暴露源码的情况下将后台的具体功能暴露出来。而近年来,RESTful风格的API因其轻量、直接基于http、数据描述简单和面向资源的优点开始流行起来。

根据功能模块分析,将接口分为用户接口、管理员接口、新闻接口、评论接口、上传内容审核接口五大类。

用户接口用于用户的登录、注册、信息修改。由于用户的登录注册以及用户对自身信息的修改需要用户提交数据,并且对数据的安全性要求较高,因此,对用户的登录接口使用POST方法最为合适。接口在接收到用户提交的数据后,对数据进行检测、处理,再根据处理的结果返回对应的json信息。

管理员接口只有登录接口,不开发注册接口。登录接口与用户登录接口相似,不再赘述。

新闻接口用于新闻的查阅、新闻的检索、新闻的增删与修改。新闻搜索接口可以通过get方法访问,可供新闻查阅者和后台管理员用于检索新闻数据。新闻的增加接口首先要判断session中是否有登录信息,如果没有,则直接返回表示错误的json数据。如果有,要对登录者的身份来决定数据的去向。如果登录者是登录用户,则将提交的新闻内容转交给上传内容审核模块处理。如果登录者是管理员,则不需要对数据审核,直接对数据进行检测,并保存到数据库中。保存成功后,返回json数据。

评论接口分为添加评论接口和删除评论接口。添加评论接口仅开放给登录用户使用,需要先从session中获取用户的登录状态,如果获取不到登录信息,说明用户尚未登录,直接返回错误信息。如果获取到登录信息,将用户提交的评论信息或上传的新闻内容进行数据监测,处理加工后,保存到数据库中。成功保存后,返回对应的json信息。删除评论接口仅开放给管理员使用,首先验证管理员是否登录,尚未登录则直接返回错误信息。如果管理员已登录,则根据用户上传的评论id来把数据库中对应的评论删除。最后判断数据库的删除状态,并返回对应的json数据。

上传内容审核接口仅获取来自用户自己上传的数据内容,通过采用大数据获取来的敏感词数据库作为关键字。当接收到来自用戶上传的新闻内容时,将内容进行全文搜索,若内容中包括关键字,则直接返回错误信息,将该发布请求驳回。若内容通过审核,则对数据进行简单的处理后,存到数据库中,并返回对应的json信息。

3  新闻模块的实现

3.1  新闻展示

用户访问前端展示系统的首页时,就是通过新闻模块的新闻展示来获取新闻数据的。首先构造出查询构造器DB::table(‘news),根据前端展示的不同需求使用where方法对不同的字段组合进行查询。比如,获取“时政焦点”展示模块时,系统自动过去最新的、点击量最高的若干条新闻,并通过laravel的模板渲染到前端页面中。获取“时政焦点”新闻数据具体的实现如下:DB::table(‘news)-> where(‘category,‘政治)->limit($number)->get();其他的展示模块的具体实现类似,不在赘述。

3.2  新闻发布

新闻发布分为用户自主上传和后台管理员发布,本模块实现了后台管理员的新闻发布,用户自主上传由于其系统开发后期的可拓展性,单独列成一个模块,方便修改。新闻发布首先要验证管理员的身份,由于本系统的管理员登录依赖session,在本模块中则通过session(‘admin_name)获取管理员的登录信息。获取到管理员信息后,通过$request-> input()获取前端$.ajax()提交的表单信息。使用预定义好的数据检测方法对数据进行类型检测,类型  监测通过后,使用构造器的insert()将数据存入数据库中。

3.3  新闻更新及删除

新闻的更新与删除均要验证管理员身份,成功后即可通过构造器的update()或delete()对数据库进行更新或删除。

3.4  新闻检索

新闻检索开放给包括管理员在内的所有用户。在前端页面提供检索框供用户输入检索关键字。后台通过$request->input()获取到关键字,然后构造查询构造器,再通过查询构造器的where(‘字段名, ‘like,‘%关键字%)对新闻的多个有效字段进行模块检索。然后通过get()获取的新闻数据,并使用laravel的模板渲染到前端页面中。

考虑到新闻系统的可扩展性,本系统的搜索功能主要使用了Sphinx搜索引擎。Sphinx具有高速索引、高速搜索、高可用性的特点,还能提供良好的相关性排名,对MySQL的支持良好。其次,在部分搜索功能的实现上,仅仅依靠了数据库的模糊查询。

使用Sphinx步骤如下:第一步,建立好数据库并导入数据;第二步,建立配置文件;第三步,生成索引;第四步,启动Sphinx;5第五步,调用API进行查询。

4   结束语

在新闻的网络化发展过程中,其传播方式已经大大改变。从以前的街头买报才能获取最新的数量有限的新闻资讯,到现在足不出门打开手机就能看到无数的新闻资讯。人们获取新闻资讯已经比以前便利了很多。世界另一端发生的事很快就能通过屏幕获取到。

随着新闻媒体在新技术大环境下的不断尝试。移动设备日益成为决定性因素,谁掌握了移动端谁就走在了其他同行的前面。科技公司和社交媒体进军新闻業的步伐加快,人们对新闻的需求不再仅仅是单方面从新闻媒体获取新闻资讯,越来越多的社交元素加入到互联网新媒体中。

本文就根据由时下最火小视频应用“抖音”获取的灵感,通过查询大量有关文献后,介绍了如何使用基于PHP和MySQL的web技术设计并开发出一个带有“全民创作”模块的新闻发布系统。但在“全民创作”模块的实现上,只能采用现有的关键词过滤手段,在对上传内容的审核方面,仍然有一段路要走。

随着人们对新闻资讯需求的不断增加,将会有越来越多的新闻媒体关注到传播方式变革的急迫性。大数据时代的来临,将会让我们对内容审核有着更完美的解决方案。

参考文献

[1] 邬恩杰, 张静. 基于XML文章发布系统的设计与开发[J]. 电脑编程技巧与维护, 2016(14): 20-22. 闫瑾. “今日头条”的内容生产和分发[J/OL]. 新媒体研究, 2018(7): 32-34.

[2] 赵旭剑, 邓思远, 李波等. 互联网新闻话题特征选择与构建[J]. 软件, 2015, 36(7): 17-20.

[3] 曹政. 基于Mahout框架的Hadoop平台作业日志分析平台设计与实现[J]. 软件, 2015, 36(11): 43-47.

[4] 张洁琼. 智媒化对新闻传播的影响研究[J/OL]. 新媒体研究, 2018(07): 35-36.

[5] 施建华. Laravel框架下电商威客平台设计及实现[J]. 宜宾学院学报, 2017(6): 23-47.

[6] 胡丹, 张绪鸿. 基于HTML5技术的十九大微传播产品[J]. 青年记者, 2018(09): 83-84.

[7] 秦奋. 移动环境下RESTful WebService的研究与设计[D]. 北京: 北京工业大学, 2015

[8] Joe Barry. Delaunay triangular mesh in convex polygons[J]. SIAM J. Sci. Stat. Comput, 1986, 7(2): 514-539.

[9] 郑迪文, 沈立炜, 彭鑫等. 基于AJAX的WEB应用构件组装技术及工具[J]. 计算机科学, 2014(11): 1-32.

[10] 张琳. HTML5与CSS3在网页视觉元素中的应用研究[J]. 九江学院学报(自然科学版), 2018, 33(01): 72-85.

[11] 章蓬阳, 邵帅. Android 异步框架的研究与设计[J]. 软件, 2016, 37(02): 150-154.

[12] 姚云飞, 杜洪波, 梁建辉. 基于 SpringMVC 框架毕业设计管理系统设计[J]. 软件, 2018, 39(01): 91-93.

[13] 李果, 刘任任. 基于地名识别的地方新闻分类方法[J]. 软件, 2018, 39(4): 73-76.