tiny-blog項目設計介紹(一個基於LAMP架構的輕量級博客系統)

一、源碼路徑

https://github.com/weiganyi/tiny-blog

 

二、界面

通過瀏覽器訪問http://tinyblog.jd-app.com可以看到如下界面:

用戶名:wgy

密碼:1234 


三、背景

最近學習了LAMP架構開發,想找個東西來練練手,博客程序是一個比較好的選擇,大小適中,通過它能夠驗證許多Web網站的基本功能。

按照LAMP架構,基於Apache服務器的PHP來開發服務器端腳本,並用Mysql來存儲數據,HTML/CSS/JS頁面部分採用純PHP動態生成的,另一部分採用大體靜態的。

因爲是一個簡單的博客系統,只包含了基本的功能,我沒有依賴於一些第三方的JS框架或者CSS庫,也沒依賴什麼PHP框架,是自己組織的程序結構,界面也比較簡單,主要驗證了博客程序涉及到的各種基本功能。

 

四、功能實現

博客程序主要完成如下功能:

1、包含用戶註冊和登錄功能,以及基於cookie的用戶狀態保留。

2、包含博客文章瀏覽、文章編輯提交、文章管理、閱讀統計、評論統計等功能。

3、包含博客信息展示、文章分類、博客歸檔、閱讀排行、最新評論等側邊欄功能。

4、包含博客文章分類編輯、評論管理、博客配置等功能。

5、支持多語言機制。

6、單一入口類型網站。

 

五、總體設計思路

1、數據庫表的設計包含5個表,其中tb_posts表負責存儲文章相關內容,tb_categories表負責存儲文章分類,tb_comments表負責存儲文章的評論,tb_users表負責存儲用戶帳戶數據,tb_options表負責存儲一些博客公共選項。表的具體字段如下:

create table tb_posts(

   post_id int(4) not null primary key auto_increment,

   user_id int(4) not null,

   category_id int(4) not null,

   post_date datetime not null,

   post_title text not null,

   post_content longtext not null,

   read_number int(16) not null);

create table tb_categories(

    category_id int(4) not null primary keyauto_increment,

   category_name char(255) not null);

create table tb_comments(

   comment_id int(4) not null primary key auto_increment,

   post_id int(4) not null,

   user_id int(4) not null,

   comment_date datetime not null,

   comment_content longtext not null);

create table tb_users(

   user_id int(4) not null primary key auto_increment,

   user_name char(255) not null,

   user_password char(255) not null,

   user_registered datetime,

   user_email char(255),

   user_level enum('admin','user') not null);

create table tb_options(

   option_id int(4) not null primary key auto_increment,

   option_name char(255) not null,

option_valuelongtext);

2、目錄下有一個config.xml文件,包含數據庫的主機名、用戶名、密碼和數據庫名等配置信息,在數據庫還不能提供服務器時,提供了最初始的配置方式。通過這些配置連接上數據庫後就由數據庫來提供後續的各種配置。

3、博客設計爲一個單一入口網站,所有頁面訪問都index.php進入,然後通過page參數來指明具體要訪問的頁面,這樣一些通用的處理就可以集中寫在一處。

4、文章瀏覽頁面的文章標題分頁顯示,採用的ajax來實現,這樣在瀏覽時可以不用刷新頁面,ajax採用原生Javascript的支持來實現,ajax都定義單獨的文件來進行處理。

5、多語言機制定義的一個數組,每種語言各定義一個文件,通過數據庫配置取得目前採用的語言,然後引入對應的語言文件,就可以使用語言相應的文本來顯示界面。

6、用戶登錄狀態的保持採用PHP支持的session機制,通過在HTTP報文中cookie的SESSIONID參數來攜帶。

7、CSS文件獨立出來了,不跟PHP代碼混在一起,這樣會比較清晰好維護,全局只有一份CSS文件。

8、內部有cache模塊,可以根據標籤保存在一次頁面訪問過程中前面步驟處理得到的數據,後面步驟可以根據這個標籤取出數據繼續使用。

9、爲了簡單起見,雖然整個博客系統沒有提供插件和模板機制,數據庫訪問、核心邏輯控制和頁面拼接等的顯示都各自獨立出來。

10、對於文章閱讀次數統計這個功能,在設計上採用,在每次第一次訪問文章內容頁面時,通過setcookie的方式,把閱讀的文章id附加到cookie的visit_post字段中,並增加這篇文章的閱讀次數。後續訪問時通過請求的這個cookie參數就可以判明訪問的文章是否之前已經訪問過了,如果訪問過了就不再增加閱讀次數。

11、爲了支持中文,需要整個博客系統要設計成UTF8編碼方式。具體涉及到如下要點:1)所有頁面頭部要增加一行“<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8" />”。2)修改數據庫、表以及文本類型字段爲utf8編碼。3)修改所有php、js文件爲utf8編碼。4)php進行數據庫查詢前調用命令“set names utf8”。

12、寫文章的Web在線編輯器使用的是我之前另外一個編輯器項目mini_editor,可以實現一些常用的文本編輯功能,並且是所見即所得的,保存到後臺數據庫的文章內容是包含HTML標記的。

 

六、文件及目錄介紹

index.php:博客入口頁面。

login.php:博客用戶登錄頁面。

register.php:博客用戶帳號註冊頁面。

head.php:博客頭部頁面。

menu.php:博客菜單頁面。

sidebar.php:博客側邊欄頁面。

foot.php:博客底部頁腳頁面。

post.php:文章內容瀏覽頁面。

post_list.php:文章標題列表頁面。

post_list_ajax.php:文章標題列表ajax後臺處理頁面。

new_post.php:文章編輯頁面。

image.php:文章編輯器本地圖片提交後臺處理頁面。

admin_post.php:文章管理頁面。

admin_post_ajax.php:文章管理ajax後臺處理頁面。

admin_post_ajax2.php:文章管理ajax後臺處理頁面。

admin_category.php:分類管理頁面。

admin_comment.php:評論管理頁面。

admin_comment_ajax.php:評論管理ajax後臺處理頁面。

admin_config.php:系統配置頁面。

404.php:404頁面。

style.css:全局樣式表。

tinyblog_db.sql:數據庫導出文件。

config.xml:默認配置文件。

control\tb_login.php:登錄邏輯模塊。

control\tb_function.php:後臺功能模塊。

control\tb_cache.php:緩存模塊。

control\tb_ajax.js:ajax的Javascipt模塊。

control\tb_function.js:Javascript的功能模塊。

model\tb_db.php:數據庫處理模塊。

lang\en.php:英文語言文件。

lang\ch.php:中文語言文件。

 

七、安裝方法

1、在Web服務器根目錄下建立一個tinyblog目錄。

2、把項目源碼放置到tinyblog目錄下。

3、進入mysql命令行,先創建數據庫tinyblog,鍵入:create database tinyblog;

再導入數據庫文件,鍵入:source/home/weigy/work/tinyblog/tinyblog_db.sql

4、最後通過瀏覽器訪問項目目錄即可正常訪問博客系統。

(完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章