1、基于 PHP 的博客设计与开发1目录摘要第一章 相关应用软件的概述1.1 博客的概述 1.2 PHP 概述1.3 SQL 相关简介1.4 Dreamweaver 的概述第二章 系统设计与规划2.1 功能设计2.2 用户访问流程第三章 服务器搭建与数据库管理3.1 环境配置3.2 数据库 liuyanban3.2.1 user 数据表3.2.2 liuyan 数据表3.2.3 cate 数据表3.3 服务器中的数据库创建及相关权限第四章 Blog 网页界面设计4.1 主网页会员和访客4.1.1 首页4.1.2 注册页4.1.3 查看留言页4.1.4 登录页4.1.5 填写留言页4.1.6 用户列
2、表页4.1.7 注销页第五章 详细设计5.1 文件清单5.2 用户注册5.3 用户登录5.4 博文管理第六章 数据库备份与恢复致谢参考文献基于 PHP 的博客设计与开发2基于 PHP 的博客设计与开发摘要随着互联网络技术的迅猛发展,网络已充斥到我们生活的每个角落,博客也成为我们生活中必不可少的一部分。本系统利用 PHP 动态网络开发技术,以 SQL 作为后台数据库,使用 Apache 配置 Web服务器,结合 HTML 脚本语言,以及配合多种网页开发工具,实现了基于 PHP 的博客系统。整个系统不仅可以提供用户登录、用户注册,还能使用户在博客中发表留言、查看留言,并且将用户发表的留言进行分类,
3、使用户可以有选择性的浏览文章,让博客平台能更高效,更丰富的展现在用户面前。本文详细描述了博客的设计方案、开发过程和特色。关键词:博客;PHP;SQL;Apache 基于 PHP 的博客设计与开发3第 1 章 相关应用软件的概述1.1 博客的概述“博 客 ”一 词 是 从 英 文 单 词 Blog 音 译 而 来 。 博 客 最 初 的 名 称 是 Weblog, 由 web和 log 两 个 单 词 组 成 , 按 字 面 意 思 就 为 网 络 日 志 , 简 称 为 “网 志 ”。 后 来 喜 欢 新 名 词的 人 把 这 个 词 的 发 音 故 意 改 了 一 下 , 读 成 we bl
4、og, 由 此 , blog 这 个 词 被 创 造 出 来 。Blog 是 继 Email、 BBS、 ICQ 之 后 出 现 的 第 四 种 网 络 交 流 方 式 , 是 网 络 时 代 的 个 人“读 者 文 摘 ”。 简 言 之 , Blog 就 是 以 网 络 作 为 载 体 , 简 易 迅 速 便 捷 地 发 布 自 己 的 心 得 ,及 时 有 效 轻 松 地 与 他 人 进 行 交 流 , 再 集 丰 富 多 彩 的 个 性 化 展 示 于 一 体 的 综 合 性 平 台 。1.2 PHP 的概述PHP,是英文超级文本预处理语言 Hypertext Preprocessor
5、的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入 HTML 文档的脚本语言,语言的风格有类似于 C 语言,被广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。用 PHP 做出的动态页面与其他的编程语言相比,PHP 是将程序嵌入到 HTML 文档中去执行,执行效率比完全生成 HTML 标记的 CGI 要高许多;PHP 还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP 具有非常强大的功能,所有的 CGI 的功能 PHP 都能实现,而且支持几乎所有流行
6、的数据库以及操作系统。最重要的是 PHP 可以用 C、C+进行程序的扩展。 PHP 是完全免费的开源产品,不用花钱,你可以从 PHP 官方网站自由下载。并且你可以不受限制的获得源码,甚至可以从中加入自己的想法和特色。 1.3 SQL 相关简介SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。SQL 是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结
7、构的不同数据库系统,可以使用相同的 SQL 语言作为数据输入与管理的接口。SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS SQL Server、Oracle、Sybase 以及其他数据库系统。SQL 语句结构不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、 DELETE、INSERT、WHERE 等等) 。鉴于以上 SQL 语言的各种优点和功能,所以 SQL 非常适合 PH
8、P 技术开发动态网站。1.4 Dreamweaver 的概述Dreamweaver 是美国 MACROMEDIA 公司(2005 年被 Adobe 公司并购)开发的集网页设计、网站开发和站点管理功能于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,具有可视化、支持多平台和跨浏览器的基于 PHP 的博客设计与开发4特性,是目前网站设计、开发、制作的首选工具。1、灵活的编写方式2、可视化编辑界面3、功能更多的 CSS 支持 CSS 可视化设计、CSS 检查工具4、动态跨浏览器验证5、强大的 WEB 站点管理功能6、内建的图形编辑引擎7、超强的扩展能力Dream
9、weaver 还支持第三方插件,任何人都可以根据自己的需要扩展 Dreamweaver 的功能,并且可以发布这些插件。第 2 章 系统设计与规划2.1 功能设计图 1在本博客系统中有“登录和注销” 、 “注册用户” 、 “我要留言” 、 “显示留言”和“用户列表“等功能页。“注册用户”页,需要按要求填写自己的用户名、Email、和密码,当用户邮箱已注册过则会出现注册失败的提示。基于 PHP 的博客设计与开发5“用户登录”页,需要填写自己的邮箱和密码。“我要留言”页,该留言板采用了 FCKeditor 文字编辑器,用户需要填写文章标题、分类和正文类容,发表留言时用户可以根据个人喜好插入文字、字符
10、、表情和图片等。“显示留言”页,用户可以查看所有已发表的留言,并且可以看到留言的发言人和留言类别。“用户列表”页,用户可以查看到所有的注册会员、会员头像、Email 地址和注册时间,也可以点击用户名查看该用户的全部留言。会员用户可以根据 Email 地址进行注销和登录,登录用户拥有对 “显示留言” 、 “我要留言” 、 “用户列表”的操作权限。如图 2 所示图 2未登录的用户可以选择“我要注册”成为博客的会员,再次登录即可享受会员的权限。否则,作为访客用户只能查看其他人的留言而不能发表自己的留言。如图 3 所示图 32.2 用户访问流程基于 PHP 的博客设计与开发6图 4 访客登录界面图 5
11、 会员登录界面本博客系统中分为会员用户和访客用户,针对不同的用户他们分别拥有不同的权限。当用户作为访客登录本博客时,该用户只能在博客中查看他人的留言和使用博客中的“友情链接”服务,不能使用“我要留言”和查看“用户列表”的功能。当访客用户注册成为会员用户后,可以点击“登录”输入用户邮箱和密码,以会员的身份进入博客系统中。会员用户登录成功后,首页的“登录”和“友情链接”页都会自动隐藏,页面会增加“我要留言”和“用户列表”页,并且会将留言板的留言自动分类显示在右侧的“文章列表”导航栏中,用户可以点击“我要留言”发表自己的留言,也可以选择“用户列表”查看其他用户的部分信息,用户点击“文章列表”下的导航
12、时,可以根据链接自由选择感兴趣的文章。当用户需要退出会员界面或者想更换会员身份登基于 PHP 的博客设计与开发7录时可以点击“注销”在进行下一步操作。第 3 章 服务器搭建与数据库管理3.1 环境配置运用 PHP 对系统进行开发和应用,必须首先安装和配置好相应的开发环境和支持组件。本系统的运行环境是在 WindowsXP 服务器,Apache 服务程序,MySQL 数据库、Dreamweaver 软件和 PHP 相关软件下进行的。运行之前我们需要修改 php.ini 和 my.ini 文件,并且要将 Internet 信息服务下的默认网站关闭,最后重启 Apache 软件。php.ini 文件
13、的修改:在开始菜单的“程序”中找到“AppServ”选择其子菜单“php Edit the php.ini Configuration file”找出“ output_buffering = off”并修改为“output_buffering = 4096” 修改后将其保存。如图 6 所示图 6my.ini 文件的修改:在 C 盘 “javawebmysql5”中,用记事本打开“my.ini”文件找出“sql-mode=“STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION“”语句,将其修改为:“sql-mode=“NO_
14、AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION“” ,以取消 mysql的 sql-mode 的严格认证,是数据库表可以兼容更多的类型。如图 7 所示基于 PHP 的博客设计与开发8图 73.2 数据库 liuyanban3.2.1 user 数据表在一个博客系统中,后台数据库是必不可少的。经过需求分析和概要设计,在 SQL数据库管理系统中建立名为 liuyanban 的数据库,系统所有应用的数据信息将存储在该数据库中,数据库中建立以下 3 种不同类型的数据表,分别为:用户表(user) 、留言表(liuyan)和分类表(cate)三个表。这些表基本上都是一表负
15、责一个对象的各种信息存储,它们协调工作,以实现个人博客系统对数据存储的要求。系统主要为了满足用户使用博客的需要,User 数据表主要包含用户名、用户编号、用户密码、用户邮箱、注册时间、头像地址六个字段。其中,用户邮箱和用户密码是用户登录博客时必填的也是十分重要的。如图 8 所示图 83.2.2 liuyan 数据表liuyan 数据表主要用来存储留言的各种信息,其中留言标题和正文是留言时必填的。基于 PHP 的博客设计与开发9如图 9 所示图 93.2.3 cate 数据表cate 数据表主要存储用户的分类信息,其中 id 是唯一标识分类信息的主键。如图 10 所示图 103.3 服务器中的数
16、据库创建及相关权限在创建后台数据库数据库之后,需要在数据库中创建一个新用户,并且给该用户相应的权限。如图 11 所示图 11基于 PHP 的博客设计与开发10第 4 章 Blog 网页界面设计4.1 主网页会员和访客本博客的主页面分为两种,当用户以会员和访客两个不同身份登录时会显示出不同的界面。4.1.1 首页博客的首页是相当重要的,这不仅仅是整个博客的第一影响,而且是展现个人博客系统的布局、风格和个性的窗口。会员用户首页包括博客的最新日志区,最新注册用户区,站内链接区和文章列表区。如图 12 所示图 12访客用户首页包括博客的最新日志区,最新注册用户区,站内链接区和友情链接区。如图 13 所
17、示基于 PHP 的博客设计与开发11图 13首页模块 index.php 中包括了数据库连接文件 connect.php,首页的布局和美工设计使用到了 Dreamweaver 8 网页开发工具作为辅助开发,自动生成相应的 HTML 代码,并得到的 HTML 代码直接嵌入到 index.php 文件中。4.1.2 注册页用户注册页是在博客“首页”下操作的,主要由 register.php 完成。注册界面如图 14所示基于 PHP 的博客设计与开发12图 144.1.3 查看留言页查看留言同样是在博客“首页”下操作的,该页是会员和访客用户同时拥有的权限,查看留言的功能主要由 view_messag
18、e.php 完成。用户在“首页”中点击“显示留言”即可查看博客中的所有留言。如图 15 所示图 154.1.4 登录页用户登录页是在博客“首页”下操作的,经过注册的用户可以选择登录帐户。登录后的用户将获得响应权限的功能。如图 16 所示基于 PHP 的博客设计与开发13图 16 用户登陆页面4.1.5 填写留言页填写留言页是本系统中的一个基础功能页。用户可以通过该页发表自己的留言,这个功能主要由 insert.php 完成。在保存过程中,系统会在数据库中为该文章自动生成一个文章 ID 编号,这个编号是自动递增的生成,用来唯一标识一篇文章。如图 17 所示图 174.1.6 用户列表页基于 PH
19、P 的博客设计与开发14用户列表页的功能主要由 view_user.php 完成,可以让用户看到更多的其他用户的部分信息,提供会员用户们一个相互了解的平台。如图 18 所示图 184.1.7 注销页注销页可以让用户退出会员登录界面,该功能主要由 logout.php 完成。第 5 章 详细设计5.1 文件清单文件清单是本博客系统中运用到的所有文件的列表。清单中主要包括ckeditor、img、includes 和 upload 四个文件夹及部分数据库连接文件。其中,ckeditor 文件夹中主要存放的是留言板中的留言插件;img 文件夹中存放的是网站页面中的图片;includes 文件夹中包含
20、网页框架文件;upload 文件夹是用来存放用户头像文件的。如图 19所示基于 PHP 的博客设计与开发15图 195.2 用户注册用户注册页是每个用户成为博客会员的必填页,用户点击“我要注册”进入用户注册界面,在正式注册页面中用户填写用户信息,包括用户名、密码、Email 等。用户的“密码”和“确认密码”必须一致才能注册,否则会提示用户“两次密码不同” 。用户的Email 填写格式必须正确,否则会提示用户“Email 格式不符” 。当所有信息正确后系统会在数据库中为该用户自动生成一个用户 ID 编号,这个编号是自动递增的生成,用来唯一标识一个用户。如图 20 所示图 201、注册用户的验证代
21、码如下:基于 PHP 的博客设计与开发16if(isset($_POSTSubmit)if(empty($_POSTname)$errors = 用户名不能为空。;if(empty($_POSTpasswd)$errors = 密码不能为空。;if(empty($_POSTpasswd2)$errors = 确认密码不能为空。;if($_POSTpasswd!=$_POSTpasswd2)$errors = 两次密码不同。;if(!ereg(“(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-2,6)+“,$_POSTemail)$errors = Email
22、格式不符。;if($_FILESuploaderror != 4)if($_FILESuploaderror = 2)$errors = 上传文件超出 512k!;unlink($_FILESuploadtmp_name);$allowed = array(image/jpg,image/jpeg,image/png,image/pjpeg,image/gif,image/x-png);if(!in_array($_FILESuploadtype,$allowed)$errors = 上传文件类型不符!;if(isset($errors)echo ;foreach($errors as $va
23、lue)echo “$valuen“;echo 请重填:;该段代码主要是对用户输入的信息进行了验证,包括用户名、密码、Email 以及用户上传头像的大小和文件类型,在这些信息中任何一条信息填写错误,系统都会自动报错并且返回重填。2、写入数据库代码:require_once(includes/connect.php);$sql = “INSERT INTO user ( id , name , passwd , 基于 PHP 的博客设计与开发17email , shijian,upload ) VALUES (NULL , $_POSTname, SHA1( $_POSTpasswd ) , $
24、_POSTemail, NOW( ),$newfilename )“;该段代码会将用户填写的信息写入数据库的用户注册信息表中。其中上传头像分为自定义头像和默认头像,其部分代码如下:if(isset($_FILESupload)$filename = $_FILESuploadname;$array = explode(.,$filename);$newname = date(YmdHis);$length = count($array);$newname .=. . $array$length - 1; if(!move_uploaded_file($_FILESuploadtmp_name,
25、“upload/$newname“)$newfilename = upload/default.jpg;else $newfilename = “upload/$newname“;如果用户上传头像,那么就会以当前时间从新命名,并移动到 upload 文件夹下,如果用户没有上传头像,那么系统就会默认使用在 upload 文件夹下的 default.jpg 文件作为默认头像。3、当用户资料填写正确后,系统会有“注册成功,看看还有谁注册了”的提示。其部分代码如下:if(mysql_query($sql)echo 注册成功 看看还有谁注册了;mysql_close($dbc);基于 PHP 的博客设计
26、与开发18exit();5.3 用户登录用户登录页是提供会员用户登录首页时的必填界面,会员登录时用户需要填写邮箱和密码,服务器端通过数据库检查该用户邮箱是否存在,如果存在,检查密码是否正确,在密码也正确情况下系统服务器端给予登录响应。用户登录的部分验证代码如下:if(isset($_POSTSubmit) require_once(includes/connect.php);$sql =“ SELECT * FROM user WHERE passwd = SHA1($_POSTpasswd)AND email = $_POSTemail “;mysql_query(“SET NAMES gb
27、2312“);$result = mysql_query($sql);$num = mysql_num_rows($result);if($num 0)$row = mysql_fetch_array($result);/echo 登录成功,欢迎您: . $rowname;session_start();$_SESSIONname = $rowname;header(location:index.php);exit();elseecho您输入的用户名和密码出错。;验证流程如图 21 所示:基于 PHP 的博客设计与开发19图 21 用户登录流程5.4 博文管理博文管理功能分为填写留言页和显示留
28、言页。其中,填写留言页运用了 ckeditor 插件可以提供用户添加留言标题、选择文章类别、发表留言正文和插入表情图片等功能。用户通过发表文章,可以让其他用户看到自己对事物的独到见解,以便能够同来访者进行交流,是一个展现自己的平台。发表留言时,留言主题和正文内容必须填写,系统会自动验证留言是否规范,当留言规范时系统会提示留言成功并保存在相应的数据库中。其中,调用 ckeditor 插件的代码如下:填写留言页的验证留言的部分代码如下:if(isset($_POSTSubmit)if(empty($_POSTbiaoti)$errors = 标题不能为空。;if(empty($_POSTzheng
29、wen)$errors = 正文不能为空。;if(isset($errors)基于 PHP 的博客设计与开发20echo ;foreach($errors as $value)echo “$valuen“;echo 请重写:;该段代码主要用于验证文章标题是否为空和正文内容是否为空,如果有任意一项为空那么系统验证就会提示“请重写” ,否则该留言就不会成功。当验证成功后,系统会自动将该留言写入数据库,同时也会给该留言分配一个 ID 编号用来唯一标识该篇文章,并将留言的类型和时间自动写入,其代码如下:$sql = “INSERT INTO liuyan ( id , biaoti , zhengwe
30、n , lshijian , user_name, cate_name ) VALUES (NULL , $_POSTbiaoti, $info, NOW( ) , $_SESSIONname, $_POSTcate)“;mysql_query(“SET NAMES gb2312“);if(mysql_query($sql)echo 留言成功;mysql_close($dbc);echo 查看留言;exit();elseecho 留言失败 . mysql_error() ;mysql_close($dbc);该段代码中写入了留言 ID、留言标题、正文、留言时间、留言人和留言类别。当留言成功时系
31、统会跳出“留言成功”和查看留言的链接;当留言失败时,系统会跳出“留言失败”并报告错误。查看留言页,该页是本博客系统的一项主要功能。因此,在博客中我们可以随时随处的查看留言。查看留言的功能在以下四处可以浏览:1、用户登录首页会显示最新留言(图 22) ;2、站内链接中的“显示留言”会显示所有留言(图 23) ;3、点击最新注册用户或用户列表的头像会显示该用户的所有留言(图 24、25) ;4、会员界面中的文章列表会显示分类留言(图 26) 。基于 PHP 的博客设计与开发21图 22 最新留言图 23 所有留言基于 PHP 的博客设计与开发22图 24 用户所有留言图 25 用户所有留言基于 P
32、HP 的博客设计与开发23图 26 分类留言第 6 章 数据库备份与恢复在博客系统中,数据库的备份与恢复是必不可少的。其中数据库的备份需要选中数据库留言板,点击导出基于 PHP 的博客设计与开发24致谢这次毕业设计是对我大学三年所学知识的一次综合应用,通过本次毕业设计,让我得到了很大的锻炼,也学到了很多知识。从系统相关技术的资料搜集和学习,博客的功能分析,需求分析,到架构设计,数据库设计,再到具体的编码和开发、辅助工具的使用,都是在指导老师的指导和同学的帮助下由个人完成的。在此,我对导师施莹和帮助过我的同学表示深深的谢意。在你们的指导下让我对 PHP 的开发有了全新的认识,同时也深刻感觉到自己所掌握知识的不足,在系统不断的设计和开发过程中,我也不断的学到了很多新的知识。这使我对自己的未来充满了信心。参考文献1 施莹.PHP Web 应用开发教程 .正德学院出版社, 2011 年 8 月2 陈军.PHP+MySQL 经典案例剖析.清华大学出版社,2008 年 8 月3 王涌.PHP 与相关数据库技术高级指南.电子工业出版社,2004 年4 Apache 百度百科