軟件工程畢業(yè)論文基于laravel框架的個(gè)人博客發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
已閱讀1頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b>  (20 屆)</b></p><p>  基于laravel框架的個(gè)人博客發(fā)布系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  所在學(xué)院 </p><p>  專業(yè)班級

2、 軟件工程 </p><p>  學(xué)生姓名 學(xué)號 </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p>  閩江學(xué)院畢業(yè)論文(設(shè)計(jì))誠信聲明

3、書</p><p><b>  本人鄭重聲明:</b></p><p>  茲提交的畢業(yè)論文(設(shè)計(jì))《基于laravel框架的個(gè)人博客發(fā)布系統(tǒng)》,是本人在指導(dǎo)老師 的指導(dǎo)下獨(dú)立研究、撰寫的成果;論文(設(shè)計(jì))未剽竊、抄襲他人的學(xué)術(shù)觀點(diǎn)、思想和成果,未篡改研究數(shù)據(jù),論文(設(shè)計(jì))中所引用的文字、研究成果均已在論文(設(shè)計(jì))中以明確的方式標(biāo)明;在畢業(yè)論文(設(shè)

4、計(jì))工作過程中,本人恪守學(xué)術(shù)規(guī)范,遵守學(xué)校有關(guān)規(guī)定,依法享有和承擔(dān)由此論文(設(shè)計(jì))產(chǎn)生的權(quán)利和責(zé)任。</p><p><b>  聲明人(簽名):</b></p><p><b>  摘 要</b></p><p>  本管理個(gè)人博客系統(tǒng)是的制作想法是因?yàn)槟壳按蠖嗟牟┛推脚_的寫作方式以及博文的管理方式都太過于傳統(tǒng)以及繁瑣

5、,所以我希望吧markdown這種寫作方式帶給大家,讓大家可以感受到markdown這種寫作方式帶來的寫作快感。也希望位自己制作一個(gè)新的寫作平臺,建檔方便的寫作平臺。</p><p>  我希望搭建一個(gè)美觀使用良好的博客系統(tǒng),可以用來記錄自己的平日的靈感或者是作為生活筆記。本人使用博客很長時(shí)間了,也深刻體會到一個(gè)博客系統(tǒng)對于一個(gè)技術(shù)人員的重要性。如果是一個(gè)程序員的話博客相當(dāng)于是技術(shù)沉淀的一種方式。</p&g

6、t;<p>  博客系統(tǒng)最重要的是記錄方式,以及瀏覽的體驗(yàn)。使用markdown的好處就是我們不需要進(jìn)行復(fù)雜的富文本編輯器的操作,只需要特定的字符就可以進(jìn)行文章的排版。Markdown編譯稱html之后我們可以加入對應(yīng)的樣式表,可以做出我們想要的博客的樣子。本系統(tǒng)還提供了博客的編輯以及修改刪除的功能,讓博客的博主可以快速的進(jìn)行博客的管理,還提供了博客的評論的功能,讓博客的瀏覽用戶可以對博客進(jìn)行評價(jià),這樣就能提供很好的交流方

7、式。</p><p>  本系統(tǒng)的前端使用最新的組件化開發(fā)的方式,使用vuejs這個(gè)框架進(jìn)行開發(fā)。前端單頁應(yīng)用和后端api分開,讓耦合性大大的降低。這樣前端和后端的開發(fā)可以完全的分開。Markdown編輯器使用的是editer.md這個(gè)開源的編輯器,可以很輕松的集成到網(wǎng)站中進(jìn)行使用。</p><p>  關(guān)鍵詞:laravel;博客系統(tǒng);php;docker;mysql;B/S模式<

8、/p><p><b>  Abstract</b></p><p>  This management personal blog system yes production idea because the present most blogging platform of writing and the way the post management is too t

9、raditional 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

10、convenient platform for writing.</p><p>  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 deepl

11、y realized a blog system for the importance of a technician.If you are a programmer blog quite a way and technology precipitation.</p><p>  Blog system is the most important record, as well as the browsing e

12、xperience.Using the advantage of the markdown is we don't 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 ca

13、n 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 fun<

14、;/p><p>  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 a

15、nd 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.</p><p>  Keywords: laravel;blog system;

16、PHP;Docker.Mysql;B/S mode</p><p><b>  目 錄</b></p><p><b>  1、引言1</b></p><p>  1.1 博客管理系統(tǒng)的意義1</p><p>  1.2 博客管理方式以及寫作方式的發(fā)展1</p><p>

17、;  1.3 預(yù)期功能1</p><p>  2、開發(fā)工具簡介3</p><p>  2.1 laravel簡介3</p><p>  2.2 MySQL3</p><p>  2.3 包管理--composer3</p><p>  2.4 vuejs4</p><p>  3、系

18、統(tǒng)可行性研究5</p><p>  3.1 可行性分析5</p><p>  3.2系統(tǒng)需求分析5</p><p>  3.2.1 博客系統(tǒng)身份功能6</p><p>  3.2.2 博客頁面顯示模塊6</p><p>  3.2.3 博客個(gè)人維護(hù)模塊6</p><p>  3.2.

19、4 后臺管理系統(tǒng)7</p><p>  4、博客系統(tǒng)設(shè)計(jì)8</p><p>  4.1 博客系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)8</p><p>  4.1.1 數(shù)據(jù)庫的連接8</p><p>  4.1.2 確定該系統(tǒng)要實(shí)現(xiàn)的功能9</p><p>  4.2 博客功能模塊設(shè)計(jì)10</p><p>

20、  4.3 博客數(shù)據(jù)庫設(shè)計(jì)13</p><p>  4.3.1 數(shù)據(jù)庫結(jié)構(gòu)13</p><p>  4.3.2 數(shù)據(jù)庫邏輯數(shù)據(jù)模型16</p><p>  4.3.3 數(shù)據(jù)庫的實(shí)現(xiàn)17</p><p>  5、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)21</p><p>  5.1 詳細(xì)設(shè)計(jì)概述21</p><p

21、>  5.2 讀者用戶功能實(shí)現(xiàn)21</p><p>  5.2.1 讀者用戶注冊頁面21</p><p>  5.2.2 用戶登錄22</p><p>  5.2.4查看博客詳細(xì)內(nèi)容27</p><p>  5.2.4 評論添加30</p><p>  5.2.6 文章編寫模塊34</p>

22、<p>  5.3 系統(tǒng)管理員后臺35</p><p>  5.3.1 后臺數(shù)據(jù)管理35</p><p>  5.3.3 后臺管理員信息管理37</p><p><b>  6、系統(tǒng)測試42</b></p><p>  6.1 系統(tǒng)登錄測試42</p><p>  6.2

23、文章發(fā)表測試43</p><p>  6.3 后臺博客數(shù)據(jù)查看測試登錄測試以及種類添加測試44</p><p><b>  7、結(jié)束語46</b></p><p><b>  7.1 感言46</b></p><p>  7.2 不足及啟發(fā)46</p><p>&l

24、t;b>  致謝48</b></p><p><b>  1、引言</b></p><p>  1.1 博客管理系統(tǒng)的意義</p><p>  網(wǎng)絡(luò)技術(shù)現(xiàn)在已經(jīng)廣泛的應(yīng)用在我們的生活中了,以前的聯(lián)系方式也正在改變,然而博客是一個(gè)非常重要的一個(gè)媒介。博客現(xiàn)在已經(jīng)是一個(gè)大眾交流的一個(gè)重要載體,我們可以通過博客記錄我們自己的很多事

25、情以及工作上的經(jīng)驗(yàn)等等內(nèi)容,網(wǎng)絡(luò)博客十分方便我們?nèi)ビ涗浳覀內(nèi)粘V行枰涗浀臇|西</p><p>  博客文章都是通過時(shí)間或者關(guān)注以及喜歡程度進(jìn)行排列的,常見的是越多人閱讀的博客就會月拍在前面。比如博客園中很多的博客都可以提供很多的專業(yè)知識以及專業(yè)的英文技術(shù)文章的翻譯,也有個(gè)別大牛的日常生活也會有人圍觀,博客現(xiàn)在作為一個(gè)文字媒體收到了很多人的關(guān)注。博客給那些需要學(xué)習(xí)他人經(jīng)驗(yàn)的人帶了許多的便利,好學(xué)的人可以有很多的收

26、獲。</p><p>  1.2 博客管理方式以及寫作方式的發(fā)展</p><p>  博客是一種人類寫作在網(wǎng)上的一種方式,一般來說是通過經(jīng)常更新的文章列表構(gòu)成的,這些文章都是通過日期以及受關(guān)注來進(jìn)行排序的。Blog的內(nèi)容可以你是自己的的想法,也可以對于是某些事情的評價(jià),或者是對你生活的分享,或者是你做的有趣的事情等等</p><p>  最近出現(xiàn)的新的博客寫作方式m

27、arkdown。Markdown可以看作是一種寫作的編程語言,我們可以使用特殊的符號寫出漂亮的文章。</p><p>  Markdown是一種新型的渲染型的寫作方式,代表著一種極客的潮流。他簡介的和易于入手的寫作語法對比那些笨重的富文本工具,看起來清新有好用。Markdown現(xiàn)在最大的使用人群是碼農(nóng),因?yàn)楝F(xiàn)在github的盛行,每個(gè)項(xiàng)目中都會用到readme.md來對項(xiàng)目進(jìn)行說明。Markdown可以使用簡介的

28、語法書寫復(fù)雜的文章,條理清晰而且易于觀看。Markdown可以使用特殊符號來創(chuàng)建表格,分割線,圖片,引用,列表等?,F(xiàn)在也有很多開源的markdown編輯器可以使用,可以說是十分的方便。</p><p><b>  1.3 預(yù)期功能</b></p><p>  現(xiàn)在的博客系統(tǒng)最主要的還是寫作的功能,寫作必須舒適而且快速,這個(gè)是博客系統(tǒng)是否好用的一個(gè)關(guān)鍵因數(shù)。對于想最早的

29、時(shí)候人們寫的博客都是以日記的方式記錄,這種方式在現(xiàn)在過于原始。本篇論文主要描述了開發(fā)實(shí)現(xiàn)博客關(guān)系系統(tǒng)的設(shè)計(jì)步驟,開發(fā)運(yùn)用的那些工具以及所能實(shí)現(xiàn)的功能。</p><p>  (1)注冊登陸,這里是讓用戶可以對本系統(tǒng)進(jìn)行用戶的注冊,我們可以新建賬號來使用系統(tǒng)</p><p>  (2)博客內(nèi)容書寫 博客內(nèi)容的書寫使用的是editer.md這個(gè)開源的html5的markdown編輯器,可以快速的

30、盡心博客的編輯。</p><p>  (3)博客內(nèi)容評論 博客評論是博主和博客瀏覽者的互動(dòng)關(guān)鍵的功能。</p><p>  (4)博客內(nèi)容修改 博客的修改時(shí)一個(gè)修訂博客文章的手段,博文在發(fā)表之后如果存在錯(cuò)誤就要進(jìn)行必要的修改,以保證博客的質(zhì)量。</p><p>  (5)博客內(nèi)容刪除 博客內(nèi)容需要博主自己來進(jìn)行管理,不需要的,或者需要?jiǎng)h除的博客博主可以自行刪除。&l

31、t;/p><p>  (6)博客用戶管理 博客用戶會非常的多的,我們?nèi)绻枪芾韱T的話我們應(yīng)該有一個(gè)平臺來管理這些用戶。</p><p>  (7)博客點(diǎn)贊 博客點(diǎn)贊是一個(gè)統(tǒng)計(jì)博客受歡迎程度的一個(gè)重要的環(huán)節(jié)</p><p>  (8)博客分類以及搜索系統(tǒng) 博客分類和搜索時(shí)一個(gè)博客博文系統(tǒng)友好度的關(guān)鍵,博客是然人來閱讀的,需要有一個(gè)良好的分類系統(tǒng)以及搜索的模塊來然用戶進(jìn)行搜

32、索。</p><p>  (9)后臺用戶權(quán)限系統(tǒng) 后臺系統(tǒng)需要進(jìn)行權(quán)限分配,讓管理員可以分派各個(gè)模塊讓不同的人進(jìn)行管理。</p><p>  (10)前段組件化 前端的組件化可以讓前端的單頁面應(yīng)用編程更加快速。</p><p>  (11)跨域api調(diào)用 由于這個(gè)后端只是提供api給前端使用,我們就要進(jìn)行跨域登陸,來解決不同的域名api調(diào)用的問題。</p>

33、;<p><b>  2、開發(fā)工具簡介</b></p><p>  2.1 laravel簡介</p><p>  laravel是一個(gè)以優(yōu)雅為特點(diǎn)的開發(fā)框架,使用composer管理依賴包,各種依賴各種強(qiáng)大的包,使得laravel框架異常強(qiáng)大。</p><p>  在laravel中有一個(gè)高級的orm查詢類庫--Eloquent

34、 ORM,他能進(jìn)行強(qiáng)大的數(shù)據(jù)庫查詢,比如關(guān)聯(lián)查詢以及各種復(fù)雜where查詢,join查詢。以及對表和php類的對象映射,這樣可以滿足程序員不用寫sql語句就可以進(jìn)行快速的sql查詢。</p><p>  Laravel的控制器是十分的靈活可以直接在路由中進(jìn)行聲明,而且語法很優(yōu)雅,具有很多亮眼的特性。這個(gè)路由的設(shè)計(jì)理念是可以有最大的靈活性,又不會失去作為可以構(gòu)建大型企業(yè)應(yīng)用的性能。</p><p

35、><b>  2.2 MySQL</b></p><p>  Mysql最早只是一些小型的互聯(lián)網(wǎng)公司在使用,而現(xiàn)在越來越多的使用在大型的網(wǎng)站中了,也經(jīng)受住了高并發(fā)的考驗(yàn)。</p><p>  Mysql是互聯(lián)網(wǎng)公司最為喜愛的數(shù)據(jù)庫系統(tǒng),因?yàn)槠渖鐓^(qū)的活躍以及開源的性質(zhì),是的mysql被廣泛的修改以及使用。包括國內(nèi)的bat都在使用mysql作為系統(tǒng)的數(shù)據(jù)庫軟件平臺。

36、而且mysql可以方便的搭建出讀寫分離的架構(gòu),可以快速的進(jìn)行數(shù)據(jù)庫的集群部署。而且還有很好的兼容性,可以再各個(gè)平臺上面安裝數(shù)據(jù)庫,包括windows,unix以及各大linux系統(tǒng)</p><p>  2.3 包管理--composer</p><p>  由于composer 的出現(xiàn)php才會有一個(gè)統(tǒng)一的規(guī)范,使得不用一直造輪子。方便了PHP開發(fā)人員,也讓php的代碼越來越規(guī)范化。Com

37、poser提供了一個(gè)統(tǒng)一autoload的方案,使用的是psr3的規(guī)范,命名空間和文件加路徑相互映射提供靈活的php文件的require方式。</p><p>  Composer還提供了一個(gè)遠(yuǎn)程的代碼庫,可以使用簡單的命令就可以下載代碼包到本地進(jìn)行使用。這個(gè)代碼庫還可一和git以及svn等工具一起聯(lián)動(dòng),可以講git和svn的庫當(dāng)成代碼包來使用。而且只需要簡單的創(chuàng)建一個(gè)composer.json就可以進(jìn)行代碼包的

38、管理以及下載。</p><p><b>  2.4 vuejs</b></p><p>  Vue是一個(gè)組件化的解決方案,可以快速搭建組件化的網(wǎng)頁,以及單頁的應(yīng)用。而且vue提供許多的第三方的包支持。</p><p>  我們使用vue可以進(jìn)行方便的動(dòng)態(tài)數(shù)據(jù)到界面的更新,這得益于vue提供的雙向的數(shù)據(jù)綁定,我們可以直接操作對應(yīng)的data數(shù)據(jù)就可

39、以吧相應(yīng)的改變顯示在界面上。Vue這類框架的出現(xiàn)直接催生了web單頁應(yīng)用的熱潮。Web單頁應(yīng)用的用戶體驗(yàn)很好,現(xiàn)在的web都在網(wǎng)單頁應(yīng)用發(fā)展,一個(gè)像app一樣的網(wǎng)頁可以帶來顛覆性的體驗(yàn)。</p><p>  Vue的組件化是通過利用js的元素的get和set方法來實(shí)現(xiàn)的,然后動(dòng)態(tài)堅(jiān)挺get以及set的變化來進(jìn)行頁面數(shù)據(jù)的渲染。我在項(xiàng)目中還是用了一個(gè)vue組件的路由框架 vue-route以及vue組件的外部數(shù)據(jù)管

40、理框架vuex來搭建一個(gè)強(qiáng)大的web應(yīng)用。</p><p><b>  3、系統(tǒng)可行性研究</b></p><p><b>  3.1 可行性分析</b></p><p>  博客系統(tǒng)是一個(gè)網(wǎng)絡(luò)世界中很成熟的系統(tǒng)了,從最早的網(wǎng)絡(luò)出現(xiàn)開始就有博客系統(tǒng)的存在。</p><p>  本博客系統(tǒng)前端使用vu

41、e框架進(jìn)行組件化開發(fā)。使用的是前后分離的模式,前端在本系統(tǒng)中相當(dāng)于一個(gè)應(yīng)用,然后作為一個(gè)應(yīng)用的身份對接后臺系統(tǒng)api。系統(tǒng)的登陸認(rèn)證方式是使用oauth2.0的方式進(jìn)行,使用access_token的方式進(jìn)行身份驗(yàn)證。使用access_token這種方式進(jìn)行身份驗(yàn)證的好處是相對于傳統(tǒng)的session方式更加靈活,并且很容易實(shí)現(xiàn)跨域的登錄機(jī)制,使用cors的方式進(jìn)行跨域。</p><p>  存儲系統(tǒng)使用的是mys

42、ql關(guān)系數(shù)據(jù)庫,對于用戶數(shù)據(jù)以及博客數(shù)據(jù)可以進(jìn)行完整的增刪改查,使用mysql搭建mysql主從分離的實(shí)現(xiàn)性能的提升。由于沒有多臺電腦進(jìn)行支持我使用輕量級的虛擬容器docker進(jìn)行mysql主從的搭建??梢源蟠筇嵘齧ysql的并發(fā)性能。</p><p>  因?yàn)檫@個(gè)博客系統(tǒng)是一個(gè)每個(gè)人都可以注冊發(fā)布信息的系統(tǒng)所以必須有個(gè)后臺來管理這些內(nèi)容。對于系統(tǒng)后臺對于美觀度以及邏輯都不是要求很高,大多數(shù)都是盡心數(shù)據(jù)的管理。所

43、以我選擇了使用laravel的的一個(gè)開源的后臺系統(tǒng)laravel-admin。這個(gè)系統(tǒng)可以快熟搭建一個(gè)完整的后臺系統(tǒng),對于快速開發(fā)很有用處。</p><p>  綜上所述,系統(tǒng)的制作是完全可行的。</p><p><b>  3.2系統(tǒng)需求分析</b></p><p>  博客系統(tǒng)是一個(gè)集成書寫和查看的系統(tǒng)。</p><p&

44、gt;  (1)用戶博客書寫功能 這個(gè)是這個(gè)系統(tǒng)最為關(guān)鍵的點(diǎn);</p><p>  (2)用戶的博客管理功能 可以對博客進(jìn)行細(xì)致的管理 包括博文內(nèi)容的詳細(xì)修改,博客標(biāo)題的修改,以及博文投稿類目的修改;</p><p>  (3)博客用戶個(gè)人信息管理; </p><p>  (4)博客用戶評論以及回復(fù)的功能;</p><p>  (5)博客用戶

45、點(diǎn)贊的功能 當(dāng)喜歡文章的時(shí)候可以進(jìn)行點(diǎn)贊 這個(gè)數(shù)據(jù)之后可以用來進(jìn)行推薦使用;</p><p>  (6)超級管理員后臺管理全部的博客;</p><p>  (7)超級管理員管理后臺全部評論;</p><p>  3.2.1 博客系統(tǒng)身份功能</p><p>  個(gè)人博客發(fā)布系統(tǒng)有種角色:博客訪問者及系統(tǒng)管理員。博客訪問這包括博主以及游客,系統(tǒng)

46、管理員可以內(nèi)部進(jìn)行分級,通過隱藏菜單進(jìn)行分級。我們可以使用博客訪問者的身份瀏覽博客的內(nèi)容,通過博客系統(tǒng)管理員的身份進(jìn)行博客內(nèi)容的管理,可以管理博客的分類以及博客的評論等等內(nèi)容。</p><p>  3.2.2 博客頁面顯示模塊</p><p>  當(dāng)網(wǎng)絡(luò)用戶進(jìn)入某個(gè)人博客主頁后沒再該頁面中將提供博客日志列表的顯示,同時(shí)為了方便用戶瀏覽,在該模塊中提供根據(jù)分類進(jìn)行日志列表的顯示,也提供日志評

47、論的瀏覽,此外還允許用戶在博客頁面中發(fā)表評論及留言。 </p><p>  (1) 用戶可以分頁查看對應(yīng)評論信息;</p><p>  (2) 用戶可以針對日博客內(nèi)容發(fā)表評論;</p><p>  (3) 用戶可以針對博客進(jìn)行留言;</p><p>  (4) 用戶可以分類查看日志內(nèi)容;<

48、;/p><p>  (5) 個(gè)人博客書寫內(nèi)容的顯示;</p><p>  (6) 個(gè)人以及全部博客列表的顯示。</p><p>  3.2.3 博客個(gè)人維護(hù)模塊</p><p>  這個(gè)模塊用戶讓博主可以管理和維護(hù)自己的博客。博客個(gè)人維護(hù)該功能模塊實(shí)現(xiàn)了如下幾個(gè)子功能:</p><p>  (1)博客的

49、詳細(xì)內(nèi)容管理; </p><p>  (2)評論及留言查看;</p><p>  (3)個(gè)人基本信息維護(hù)管理。 </p><p>  這個(gè)模塊讓用戶可以對個(gè)人博客中的內(nèi)容進(jìn)行修改,可以對博文的文章內(nèi)容進(jìn)行修改,以及查看博文的評論等等功能。</p><p>  前端系統(tǒng)流程圖如下圖3-1 所示:</p><

50、;p>  圖3-1 系統(tǒng)流程圖</p><p>  3.2.4 后臺管理系統(tǒng)</p><p>  后臺管理系統(tǒng)是一個(gè)收集博客數(shù)據(jù)以及管理博客數(shù)據(jù)的系統(tǒng),對博客數(shù)據(jù)進(jìn)行管理,對評論數(shù)據(jù)進(jìn)行管理。維護(hù)博客以及網(wǎng)站的治安。</p><p>  下面是后臺管理系統(tǒng)的登錄流程以及后臺管理系統(tǒng)的權(quán)限判斷流程如圖3-2所示: </p><p>  圖

51、3-2 系統(tǒng)流程圖</p><p><b>  4、博客系統(tǒng)設(shè)計(jì)</b></p><p>  4.1 博客系統(tǒng)模塊結(jié)構(gòu)設(shè)計(jì)</p><p>  4.1.1 數(shù)據(jù)庫的連接</p><p>  數(shù)據(jù)庫pdo鏈接配置前臺是通過使用phero類庫進(jìn)行管理,使用配置文件記錄數(shù)據(jù)庫的鏈接參數(shù)。后臺使用的是laravel的數(shù)據(jù)庫類庫進(jìn)

52、行數(shù)據(jù)庫鏈接,配置文件在laravel項(xiàng)目根目錄的.evn文件中進(jìn)行配置</p><p>  下面是配置文件具體代碼,位置在config.php文件中,代碼如下所示:</p><p><b>  return [</b></p><p>  "database" => [</p><p>  &

53、quot;master" => [</p><p>  "dsn" => "mysql:dbname=blog;host=localhost",</p><p>  "user" => "root",</p><p>  "password"

54、; => "lerko",</p><p><b>  ]</b></p><p><b>  ],</b></p><p><b>  ];</b></p><p>  下面是數(shù)據(jù)庫鏈接的核心代碼位于PdoWarehouse.php文件中,代碼如下所

55、示:</p><p><b>  //根據(jù)數(shù)據(jù)</b></p><p>  public function getPdo($pattern) {</p><p>  $database_config = Config::config("database");</p><p>  $hit_classn

56、ame = Config::config('hit_rule');</p><p>  if (empty($hit_classname)) {</p><p>  $hit_classname = "Phero\Database\Realize\Hit\RandomSlaveHit";</p><p><b>  }&

57、lt;/b></p><p>  $this->pdo_hit = new $hit_classname;</p><p>  $this->init($database_config);</p><p><b>  //注入后解析</b></p><p>  $this->inject();&l

58、t;/p><p>  if (is_array($this->pdo)&&!empty($this->pdo['slave'])&&!empty($this->pdo['master'])) {</p><p>  if ($pattern == 0) {</p><p>  $pdo =

59、 $this->pdo_hit->hit($this->pdo['slave']);</p><p><b>  } else {</b></p><p>  $pdo = $this->pdo['master'];</p><p><b>  }</b></p

60、><p>  } else if(is_array($this->pdo)&&empty($this->pdo['slave'])&&!empty($this->pdo['master'])) {</p><p>  $pdo = $this->pdo['master'];</p>

61、;<p><b>  }else{</b></p><p>  $pdo=$this->pdo;</p><p><b>  }</b></p><p>  $charset = Config::config('hit_rule');</p><p>  $cha

62、rset = empty($charset) ? "utf8" : $charset;</p><p>  $pdo->exec("set names $charset");</p><p>  $pdo->exec("set character_set_client=$charset");</p>&l

63、t;p>  $pdo->exec("set character_set_results=$charset");</p><p>  //PDO::ATTR_STRINGIFY_FETCHES 提取的時(shí)候?qū)?shù)值轉(zhuǎn)換為字符串。 </p><p>  //PDO::ATTR_EMULATE_PREPARES 啟用或禁用預(yù)處理語句的模擬。</p>&l

64、t;p>  $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);</p><p>  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);</p><p>  return $pdo;</p><p><b>  }</

65、b></p><p>  4.1.2 確定該系統(tǒng)要實(shí)現(xiàn)的功能</p><p>  個(gè)人博客系統(tǒng)是一個(gè)需要包含前臺的博客發(fā)布以及后臺的博文等內(nèi)容管理的系統(tǒng)</p><p>  (1)用戶博客書寫功能 這個(gè)是這個(gè)系統(tǒng)最為關(guān)鍵的點(diǎn);</p><p>  (2)用戶個(gè)人博客管理功能 可以對博文內(nèi)容進(jìn)行管理,對博文內(nèi)容進(jìn)行編輯以及博文的投稿區(qū)域;

66、</p><p>  (3)用戶個(gè)人信息管理; </p><p>  (4)用戶評論以及回復(fù)的功能;</p><p>  (5)用戶點(diǎn)贊的功能 當(dāng)喜歡文章的時(shí)候可以進(jìn)行點(diǎn)贊 這個(gè)數(shù)據(jù)之后可以用來進(jìn)行推薦使用;</p><p>  (6)超級管理員后臺管理全部的博客;</p><p>  (7)超級管理員管理后臺全部評論

67、;</p><p>  (8)超級管理員后臺管理全部種類;</p><p>  (9)超級管理員權(quán)限分配;</p><p>  (10)后臺超級管理員資料編輯;</p><p>  (11)后臺管理博客用戶資料。</p><p>  4.2 博客功能模塊設(shè)計(jì)</p><p>  系統(tǒng)的功能模塊主

68、要分為:系統(tǒng)管理員和博客書寫用戶。這兩大模塊又分別有許多細(xì)化的功能模塊。</p><p><b>  前臺包括如下模塊:</b></p><p>  (1)用戶信息管理模塊;</p><p>  (2)個(gè)人博客的發(fā)布;</p><p>  (3)個(gè)人博客的管理;</p><p>  (4)個(gè)人博客

69、的評論系統(tǒng);</p><p>  (5)博文搜索模塊;</p><p>  (6)博文排序標(biāo)簽?zāi)K。</p><p><b>  后臺包括如下模塊:</b></p><p>  (1)所有博客信息管理;</p><p>  (2)所有博客用戶管理;</p><p>  (3

70、)所有博客評論管理;</p><p>  (4)所有博客分類管理;</p><p>  (5)后臺博客管理員權(quán)限分配;</p><p>  (6)后臺博客管理員用戶管理;</p><p>  (7)后臺分級菜單管理。</p><p>  如下圖 4-1所示:</p><p>  圖4-1 系統(tǒng)模

71、塊圖</p><p>  4.3 博客數(shù)據(jù)庫設(shè)計(jì)</p><p>  4.3.1 數(shù)據(jù)庫結(jié)構(gòu)</p><p>  數(shù)據(jù)結(jié)構(gòu)圖的意義在于可以直觀的看出數(shù)據(jù)庫的大體結(jié)構(gòu),我們可以通過數(shù)據(jù)庫結(jié)構(gòu)圖直接看出數(shù)據(jù)庫的設(shè)計(jì)思路,這樣的數(shù)據(jù)庫結(jié)構(gòu)圖清晰易懂。數(shù)據(jù)庫結(jié)構(gòu)圖的意義在于前期的設(shè)計(jì)可以有很大的設(shè)計(jì)價(jià)值。</p><p>  用戶模型E-R圖,如圖

72、4-2所示:</p><p>  圖4-2 用戶E-R圖</p><p>  種類模型圖,如圖所示 圖 4-3所示:</p><p>  圖 4-3 種類E-R模型</p><p>  博客實(shí)體模型E-R圖,如圖所示 圖4-4所示:</p><p>  圖 4-4 博客實(shí)體E-R圖</p><p&g

73、t;  留言實(shí)體模型E-R如圖所示 圖 4-5所示。</p><p>  圖 4-5 留言模型</p><p>  后臺管理員模型E-R圖,如圖 4-6 所示:</p><p>  圖 4-6 后臺管理員</p><p>  Auth2.0數(shù)據(jù)模型E-R 圖 4-7所示:</p><p>  圖 4-7 Auth2.0

74、數(shù)據(jù)表</p><p>  反應(yīng)整個(gè)系統(tǒng)的模型之間關(guān)系的總的E-R圖 如圖4-8 所示:</p><p>  圖 4-8 總er圖</p><p>  4.3.2 數(shù)據(jù)庫邏輯數(shù)據(jù)模型</p><p>  Er圖模型只是一個(gè)概念化的數(shù)據(jù)庫模型,和數(shù)據(jù)庫實(shí)體只有邏輯上面的相似性。我們這里加入從er轉(zhuǎn)化稱具體的模型字段的描述。使用文字描述說明數(shù)據(jù)庫

75、表的詳細(xì)信息。這里舉出幾個(gè)重要的表結(jié)構(gòu):</p><p>  系統(tǒng)數(shù)據(jù)庫沒有設(shè)置表的物理關(guān)系</p><p>  (1)博客表(博客id,內(nèi)容,markdown原文,創(chuàng)建時(shí)間,更新時(shí)間,訪問次數(shù),喜歡次數(shù));</p><p>  (2)用戶表(用戶id,用戶名,用戶密碼,創(chuàng)建時(shí)間,更新時(shí)間,用戶頭像,電話,郵箱);</p><p>  (3)

76、種類表(種類id,種類名稱);</p><p>  (4)auth2.0驗(yàn)證表(訪問id,用戶id,鏈接id,激活標(biāo)識,授權(quán)范圍,生存時(shí)間);</p><p>  (5)后臺管理員表(用戶名,創(chuàng)建時(shí)間,信息更新時(shí)間,管理員頭像路徑,密碼);</p><p>  (6)博客表(博客id,內(nèi)容,markdown原文,創(chuàng)建時(shí)間,更新時(shí)間,訪問次數(shù),喜歡次數(shù))。</p

77、><p>  4.3.3 數(shù)據(jù)庫的實(shí)現(xiàn)</p><p>  將E-R圖轉(zhuǎn)換稱mysql可以識別和創(chuàng)建的表結(jié)構(gòu)描述,標(biāo)注相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的描述。</p><p>  (1)博客信息表:用于記錄博客的內(nèi)容 如表 4-1 所示</p><p><b>  4-1博客信息表</b></p><p> ?。?/p>

78、2)用戶信息表:用于記錄用戶信息 如表4-2 所示:</p><p><b>  4-2 用戶信息表</b></p><p> ?。?)評論信息表:用于記錄評論信息, 如表4-3 所示:</p><p><b>  4-3評論信息表</b></p><p> ?。?)Auth2.0驗(yàn)證數(shù)據(jù)記錄表 如

79、表所示 4-4所示:</p><p>  4-4 Auth2.0的驗(yàn)證數(shù)據(jù)記錄表</p><p> ?。?)種類信息表模型如表4-5所示:</p><p><b>  4-5 博客種類表</b></p><p> ?。?)種類信息表模型如表4-5所示:</p><p><b>  4-5

80、 博客種類表</b></p><p><b>  5、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</b></p><p>  5.1 詳細(xì)設(shè)計(jì)概述</p><p>  詳細(xì)設(shè)計(jì)的概述的為了描述出真?zhèn)€系統(tǒng)的細(xì)節(jié)和全貌,從點(diǎn)上描述整個(gè)系統(tǒng)的功能。這樣后期可以更好的制作系統(tǒng),使得整個(gè)系統(tǒng)的制作流程井井有條。我們可以從這個(gè)描述中看出所有功能的詳細(xì)需求。</p&g

81、t;<p>  詳細(xì)設(shè)計(jì)概述講述了整個(gè)設(shè)計(jì)流程以及設(shè)計(jì)的功能點(diǎn),對整個(gè)系統(tǒng)的設(shè)計(jì)進(jìn)行了闡述。</p><p>  整個(gè)系統(tǒng)的架構(gòu)是由一個(gè)前端的單頁應(yīng)用以及一個(gè)后端的管理系統(tǒng),還有一個(gè)api系統(tǒng)構(gòu)成的,他們的關(guān)系如圖 5-1 所示:</p><p>  圖5-1 系統(tǒng)架構(gòu)圖</p><p>  5.2 讀者用戶功能實(shí)現(xiàn)</p><p&

82、gt;  5.2.1 讀者用戶注冊頁面</p><p>  當(dāng)新的博客用戶進(jìn)入系統(tǒng)的時(shí)候,如果要發(fā)布自己的博文,那么就需要進(jìn)行注冊成為這個(gè)博客系統(tǒng)的博主。這樣才能進(jìn)行博客的發(fā)表。注冊界面只需要填入用戶名以及密碼,密碼需要重復(fù)兩次,核對用戶沒有輸入錯(cuò)誤。如果輸入正確系統(tǒng)就會提示博客的博主身份注冊成功。這里密碼的保存使用的是加鹽的技術(shù),能夠防止如果數(shù)據(jù)庫泄露之后用戶的密碼被破解或者識別。</p><

83、;p>  用戶注冊界面如圖5-2所示:</p><p><b>  圖5-2 用戶注冊</b></p><p>  注冊的時(shí)候使用password_hash()這個(gè)php提供的加鹽函數(shù)對密碼進(jìn)行加密,讀者用戶注冊信息的核心代碼在UserController.php文件中,如下:</p><p>  public function regi

84、ster(ServerRequestInterface $request,ResponseInterface $response,array $args)</p><p><b>  {</b></p><p>  $parsedBody=$request->getParsedBody();</p><p>  $UserEntity=n

85、ew UserEntity();</p><p>  $UserEntity->username=$parsedBody['username'];</p><p>  $UserEntity->password=password_hash($parsedBody['password'],PASSWORD_DEFAULT);</p>

86、<p>  $effect=$UserEntity->insert();</p><p>  if($effect)</p><p>  return new JsonResponse([]);</p><p><b>  else</b></p><p>  return new JsonRespons

87、e(['error_msg'=>"注冊失敗"],422);</p><p><b>  }</b></p><p>  5.2.2 用戶登錄</p><p>  輸入用戶名以及密碼,然后用戶點(diǎn)擊登錄,登錄成功的話系統(tǒng)就會跳轉(zhuǎn)到首頁提示登錄成功。這里使用的是auth2.0的password驗(yàn)證登錄方式,登

88、錄之后在頁面中吧access_token(訪問令牌)寫入cookie,之后的請求都在http頭上面寫入相應(yīng)的驗(yàn)證頭,用來驗(yàn)證信息。如果瀏覽器攜帶的http頭中包含的訪問令牌是正確的話就可以正確的調(diào)用api。訪問令牌的生存時(shí)間為1天,如果范文令牌失效了就要通過refresh_token重新獲取。 如圖5-3所示:</p><p>  圖5-3登錄系統(tǒng)界面</p><p>  登錄流程圖如圖5

89、-4所示。</p><p>  圖5-4管理員登錄流程圖</p><p>  5.2.3 博客列表</p><p>  博客列表使用vue進(jìn)行渲染,使用vuex對外部數(shù)據(jù)進(jìn)行管理。這里如果刪除博客的話頁面不會進(jìn)行刷新,直接將博客文章的入口從頁面中去除。這個(gè)功能歸功于vue的雙向綁定技術(shù),可以使得控制數(shù)據(jù)和頁面的交互十分流暢。登錄成功瀏覽博客的頁面 圖5-5:<

90、/p><p>  圖5-5 博客瀏覽界面</p><p>  博客列表的代碼在ArticleController.php文件中,從數(shù)據(jù)庫中獲取文章列表。如下:</p><p>  public function getFrontArticleList(ServerRequestInterface $request,ResponseInterface $response,

91、array $args){</p><p>  $queryParam=$request->getQueryParams();</p><p>  $currentPage=$queryParam["currentPage"];</p><p>  $itemsPerPage=$queryParam["itemsPerPage&q

92、uot;];</p><p>  $sortName=$queryParam["sortName"];</p><p>  $key_word=$queryParam['key_word'];</p><p>  $tagId=$queryParam['tagId'];</p><p>  

93、if($sortName=="publish_time"){</p><p>  $sortName="create_time";</p><p><b>  }else{</b></p><p>  $sortName="visit_count";</p><p&

94、gt;<b>  }</b></p><p>  $Blog=new BlogEntity();</p><p>  $entity=Tool::getInstanct()->Page($Blog,$currentPage,$itemsPerPage);</p><p>  if($key_word) {</p><p

95、>  // $userEntity=new UserEntity();</p><p>  // $userEntity->whereEq('id','blog.id');</p><p>  $entity->whereLike("title",'%'.$key_word.'%')<

96、;/p><p>  ->whereOrLike("markdown",'%'.$key_word.'$');</p><p>  // ->whereOrExists("user.username",$userEntity);</p><p><b>  }</b>

97、</p><p>  if($sortName=='my') $entity->whereEq('uid',$request->getAttribute("user_id"));</p><p>  if(isset($tagId)&&!empty($tagId))</p><p>  

98、$entity->whereEq("tag_id",$tagId);</p><p>  $data=$entity->order($sortName,"DESC")->select();</p><p>  $xdebug_sql=$entity->sql();</p><p>  $result=[

99、"data"=>[]];</p><p>  foreach ($data as $key => $value) {</p><p>  $result["data"][]=[</p><p>  "_id"=>$value['id'],</p><p&

100、gt;  "title"=>$value['title'],</p><p>  "publish_time"=>Tool::getInstanct()->date_format_iso8601($value['create_time']),</p><p>  "like_count&qu

101、ot;=>$value['like'],</p><p>  "comment_count"=>rand(1,50),</p><p>  "visit_count"=>$value['visit_count'],</p><p>  "images"=&g

102、t;ArticleDataAccess::getImageList($value['id']),</p><p>  "uid"=>$value['uid']</p><p><b>  ];</b></p><p><b>  }</b></p>&

103、lt;p>  return new JsonResponse($result);</p><p><b>  }</b></p><p>  點(diǎn)擊我的博客會出現(xiàn)自己發(fā)布的博客文章的列表,這些都可以進(jìn)行編輯和刪除,刪除是異步進(jìn)行的,可以直接將界面中的對應(yīng)文章從界面中移除不需要進(jìn)行界面的刷新。如圖5-6所示:</p><p>  圖5-6 我

104、的博客tag</p><p>  5.2.4查看博客詳細(xì)內(nèi)容</p><p>  不管是游客還是博主都能查看博客內(nèi)容,博客內(nèi)容通過markdown渲染過后的html直接顯示在頁面上。這里顯示的有讀者的數(shù)量以及喜歡本片文章的數(shù)量還有評論的數(shù)量。如圖5-7所示:</p><p>  圖5-7 博客瀏覽界面</p><p>  查詢博客內(nèi)容信息的代

105、碼在在ArticleController.php文件中,如下代碼所示:</p><p>  5.2.5 喜歡文章</p><p>  可以喜歡文章,這個(gè)用于統(tǒng)計(jì)文章的熱度,如果評論數(shù)和閱讀數(shù)量越高的文章排序就會在越前面,喜歡之后不能重復(fù)點(diǎn)擊。如圖5-8所示:</p><p>  圖5-8 博客點(diǎn)贊界面</p><p>  點(diǎn)贊之后不能重復(fù)點(diǎn)贊

106、。如圖5-9所示:</p><p>  圖 5-9點(diǎn)贊之后的界面</p><p>  點(diǎn)贊核心代碼在ArticleController.php文件中,如下:</p><p>  //獲取文章詳細(xì)信息</p><p>  public function getFrontArticle(ServerRequestInterface $reques

107、t,ResponseInterface $response,array $args)</p><p><b>  {</b></p><p>  $Blog=new BlogEntity();</p><p>  $data=$Blog->whereEq("id",$args['id'])->fi

108、nd();</p><p>  $Blog->visit_count=$data['visit_count']+1;</p><p>  $Blog->whereEq("id",$args['id'])->update();</p><p>  return new JsonResponse([&

109、lt;/p><p><b>  "data"=>[</b></p><p>  "_id"=>$data['id'],</p><p>  "title"=>$data['title'],</p><p>  &qu

110、ot;publish_time"=>Tool::getInstanct()->date_format_iso8601($data['create_time']),</p><p>  "like_count"=>$data['like'],</p><p>  "visit_count"=&

111、gt;$Blog->visit_count,</p><p>  "comment_count"=>rand(1,50),</p><p>  "content"=>$data['content']</p><p><b>  ]</b></p><p

112、><b>  ]);</b></p><p><b>  }</b></p><p>  5.2.5 查詢博客內(nèi)容</p><p>  可以查詢博客內(nèi)容,這里的查詢可以對文章進(jìn)行范查詢,這里的查詢文章內(nèi)容使用了fulltext的全文索引,這樣來增加查詢文章的速度。文章查詢前端使用的是自動(dòng)查詢,輸入文字自動(dòng)改變查詢結(jié)果

113、,分配的查詢間隔時(shí)間為1秒。查詢內(nèi)容包括文章內(nèi)容以及文章標(biāo)題如圖5-10所示:</p><p>  圖5-10博客查詢界面</p><p>  5.2.4 評論添加</p><p>  還可以對評論進(jìn)行添加,添加評論之后直接顯示在界面上。評論保存的是評論的時(shí)間以及評論人的id到數(shù)據(jù)庫中。如圖5-11所示:</p><p>  圖5-11評論添

114、加界面</p><p>  添加評論的核心代碼在CommentController.php文件中,如下:</p><p><b>  //添加評論</b></p><p>  public function addNewComment(ServerRequestInterface $request,ResponseInterface $resp

115、onse,array $args)</p><p><b>  {</b></p><p>  $param=$request->getParsedBody();</p><p>  $UserId=$request->getAttribute("user_id");</p><p>  

116、$User=UserDataAccess::getUserInfoById($UserId);</p><p>  $CommentEntity=new CommentEntity();</p><p>  $CommentEntity->blog_id=$param["aid"];</p><p>  $CommentEntity->

117、;content=$param['content'];</p><p>  $CommentEntity->create_time=time();</p><p>  $CommentEntity->update_time=time();</p><p>  $CommentEntity->uid=$User["id&qu

118、ot;];</p><p>  $effect=$CommentEntity->insert();</p><p>  if($effect){</p><p><b>  //返回評論數(shù)據(jù)</b></p><p>  return new JsonResponse([</p><p>  

119、"success"=>true,</p><p><b>  "data"=>[</b></p><p><b>  "__v"=>0,</b></p><p>  "_id"=>$CommentEntity->g

120、etLastId(),</p><p>  "aid"=>$param['aid'],</p><p>  "content"=>$param['content'],</p><p>  "created"=>Tool::getInstanct()->

121、date_format_iso8601($CommentEntity->create_time),</p><p>  "replys"=>[],</p><p>  "status"=>1,</p><p>  "updated"=>Tool::getInstanct()->

122、date_format_iso8601($CommentEntity->update_time),</p><p>  "user_id"=>[</p><p>  "_id"=>$User['id'],</p><p>  "nickname"=>$User[

123、9;username'],</p><p>  "avatar"=>"http://api-lerko.ngrok.cc/UploadFile/avatar.jpg"</p><p><b>  ]</b></p><p><b>  ]</b></p>

124、<p><b>  ]);</b></p><p><b>  }else{</b></p><p>  return new JsonResponse(["error_msg"=>"評論失敗"],422);</p><p><b>  }</b>

125、;</p><p><b>  }</b></p><p>  這段代碼調(diào)用了UserDataAccess.php中的方法,這個(gè)類提供用戶信息獲取的實(shí)體。類的實(shí)體化代碼具體如下:</p><p>  class UserDataAccess</p><p><b>  {</b></p>

126、<p>  //獲取用戶信息通過id</p><p>  public static function getUserInfoById($uid)</p><p><b>  {</b></p><p>  $UserEntity=new UserEntity();</p><p>  $User=$Use

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論