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、最后通过浏览器访问项目目录即可正常访问博客系统。

(完)

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