1、PHP 课程设计个人博客网站开发学 院: 专 业: 姓 名: 学 号:指导老师: 完成日期:1 系统概述1.1 项目背景Blog,是 Weblog 的简称。Weblog,其实是 Web 和 Log 的组合词。Web,指 World Wide Web,当然是指互连网了;Log 的原义则是“航海日志”,后指任何类型的流水记录。合在一起来理解,Weblog就是在网络上的一种流水记录形式或者简称“网络日志”。目前进行网站开发的语言很多,如 ASP、PHP、JSP、ASP.NET 等。本项目采用主流的 PHP+HTML 框架完成对个人博客的开发。1.2 系统开发的目标1.2.1 任何拥有博客的人都可以做
2、到(1) 登录博客系统浏览文章(2) 管理自己博客的基本信息(3) 撰写个人随笔(4) 处理留言、文章评论等内容1.2.2 访问博客系统的人,可以做到游览博客系统中的文章目录、评论博客系统中的内容,只有博客管理员登录系统之后,才能进行管理。而博客系统的访问者不需要注册,也不需要登录就可以访问博客系统中的内容。1.4 系统概述一个博客其实就是由一序列网页组成的,它通常是由简短且经常更新的帖子所构成的,这些张贴的文章都按照年份和日期倒序列排列,能按照日期和主题检索。博客的内容和目的有很大的不同,有到其他网站的超级链接;有对其他网站的评论;有个人的日记,日常所思所想;有个人照片、诗歌、散文,甚至科幻
3、小说的发表。正是由于博客能收容这些不拘于个人思想的表达,使博客这种交流和表达方式日益红火起来,博客秉承了个人网站的自由精神,也开拓了激发创造的新模式,能张扬人的个性,从这个意义上说,博客将会变得越来越普及,越来越为更多的人接受。本系统主要完成以下功能。1. 客户界面部分我的文章留言用户注册/登录首页:最新评论,最新文章2. 管理界面部分文章管理留言管理基本设置2 系统分析2.2 需求分析在可行性分析阶段已经简要地分析和研究了本系统的基本需求,也论证了开发平台及软件的可行性,但为了明确系统设计的目标,了解用户的需求,现对用户需求作以调研,从而进一步明确了设计所实现子系统的功能。2.2.1 管理员
4、登录在调研中了解到,用户想要使用系统,首先要有一个友好的用户注册界面,其次, 用户需要经历登录验证过程,只有合法的拥有管理员身份的用户才可以使用系统中的管理功能,这样做可以防止非法用户登录并使用本系统,妨害数据安全。用户登录。通过系统登录验证,用户成功进入系统并开始使用其中功能。2.2.2 文章管理文章管理是用户所有文章的信息,用户可以进入此处进行相关文章的管理。这部分主要包括以下方面:(1) 文章信息显示。显示出所有文章的大概信息。(2) 发表新文章。可以发表新的文章。(3) 删除文章。允许用户对文章信息进行删除操作。2.2.3 系统信息管理系统开始运行之后,随着时间的变化会有想要更改系统的
5、相关信息的要求,比如: 修改博客的个人头像,爱好,最难忘的事等等,因此需要提供信息修改的功能。2.3 系统的主要技术分析系统开发平台WAMP 集成环境开发平台。2.4 数据分析博客系统中,主要是管理用户的文章、留言、系统信息等数据。数据的类型决定了程序对数据的处理方式也就是算法,因此,数据是系统实现分析的起点。现通过数据流图的方式分析系统中数据的流动和处理。对系统的管理员,在登录系统后,本系统接受管理员的修改、添加、删除请求,通过分析将这种请求转化成相应的 SQL 语句执行对数据库的相关的操作,并将执行的相应结果送回系统中。系统接收到数据库返回的结果集,经过一定的分析处理,将其转化成 ASP
6、页面,返回到客户端显示给用户。2.5 数据流图博客整体图管理员用户登录信息修改操作增加操作相应结果返回Blog 系统服务器提供数据浏览请求浏览者浏览文章确认浏览信息文章信息添加新文章确认添加信息修改文章确认修改信息删除文章确认删除信息文章管理细节图3 数据库设计3.1 数据库技术概述数据库(Database),是按照数据结构来组织、存储和管理数据的仓库,是用于查询的大量数据的存储区域。使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间,实现数据资源的充分共享等等。近年来推出的计算机关系数据库管理系统,还具有操作直观,使用灵活,编程方便, 功能强大,环境适应广泛,数
7、据处理能力极强等诸多优点。3.2 数据库选择本系统所采用的数据库是mysql 数据库3.3 数据库逻辑结构设计和约束设置数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库逻辑结构。博客系统中各个表的设计结果如下面表格所示。每个表格表示在数据库中的一个表:用户表-wyb_users字段名含义字段类型约束id账号varchar(20)主键passwd密码varchar(20)非空uname用户名varchar(50)非空sex性别varchar(10)只能取男或女age年龄integer-博文表-wyb_articles字段名含义字段类
8、型约束bid博文编号number自动增长列,主键title博文题目varchar(255)非空type_name博文类型varchar(255)与 wyb_types 表中的type_name 外键关联content博文内容varchar(2000)-time写入时间date-类别表-wyb_types字段名type_namedescribe含义类名名称分类描述字段类型varchar(50)varchar(500)约束主键非空分类表-wyb_classify字段名type_name bid含义类名名称博文编号字段类型varchar(50) number约束(type_name,bid)联合主键
9、, 与 wyb_articles 表中的 bid及与 wyb_types 表中的type_name 外键关联,且级联删除。字段名bid uname time含义博文编号用户名 写入时间字段类型number varchar(50) date约束(bid,user,time);联合主键, 与 wyb_articles 表的 bid外键关联,且级联删除。comment评论内容varchar(500)非空评论表-wyb_comments4 系统设计对博客系统进行系统分析、数据库设计之后,本章将主要介绍系统各功能模块的设计及其实现。软件所实现的功能强弱是衡量一个软件的最根本的标准。通过对系统的全面分析并
10、结合调研的情况,确定了本系统的功能模块图。本章先从系统总体结构设计介绍,接着分别对公用模块、客户界面、管理对功能模块加以描述。4.1 系统总体设计本系统数据库采用 Mysql ,Web 服务器采用 Apache4.2 公用模块的编写4.2.1 数据库连接文件为了操作数据库方便,把连接数据库、查询、更新、插入、关闭连接等数据库操作都写在一个公用文件 conn.db.php 中,这样其他页面引入这个页面,就可以调用数据库操作方法,操作数据库了,这样便于提高程序的重用性。4.2.2 用户登录和注销把判定用户登录和注销的程序写在首页 Default.asp 中。当用户在首爷输入用户名和密码请求登录时,
11、先从数据库查询该用户的用户名和密码是否正确,如果正确则把该用户的用户名和密码,写入用户 Cookie,这样其他页面如果需要用户登录才能访问,只需要从Cookie 取用户的用户名,如果能取得,则说明用户已经登录,否则用户未登录。当然用 Cookie 记录用户登录是有风险的,最好用 Session 记录。注销只需要设置记录用户的 Cookie 过期就可以了。4.3 客户界面的设计与实现界面模块化,可以提高代码的重用性,能为编程提供很大便利,节省开发时间,提高开发效率4.3.1 界面头设计(1)设计思想为了体现简洁明快的风格,界面头不打算用很复杂的动画图片,顶部直接安排一个导航栏,让用户可以在首页、
12、个人资料、博文、评论、博文管理、评论管理等模块之间方便的切换。4.3.2 首页设计与实现首页是一个网站的窗口,长久留住一个用户靠网站强大的功能和丰富的内容,要想吸引用户,首页的设计精美和人性化也是重要的因素。首先是给浏览者留下的第一印象。所以设计要精美;首页是网站的导航图,所以设计要人性化,重点层次突出。设计思想首页直接引入前面设计的公用模块的界面头和尾。首页左边给出浏览者一个清晰的导航。在右边用户能登录/注册、最新更新的博文列表、评论,在左边显示最新更新的博文信息。博客最核心的是文章,所以正文右边给出一块很大空间用以展示最新书写的几篇文章的标题和内容概要,用户单击博文标签能进入查看该文章的详
13、细内容。4.3.4 用户注册模块设计页面 Register.aspx 主要完成引导用户进行注册,首先会提供注册表让用户输入用户名和密码等,让用户输入注册信息,输入完成后,当用户单击注册按钮的时候,要对用户输入的注册信息简单认证,看用户信息是否验证,如果验证进行数据库验证,查看用户之前是否已经注册过,如果没有注册则插入一条新记录到数据库,完成注册。4.3.5 “文章评论”功能模块设计在展现文章页面的末尾,提供接口供浏览者针对该文章发表评论,技术实现非常简单, 就是提供发表评论标题和评论内容的文本框,让读者输入评论标题和内容,当读者单击提交按钮的时候,把评论标题和内容保存到数据库。4.4 管理界面
14、设计4.4.1 “添加文章”功能模块通过“添加文章”功能模块用户能设置文章标题,选择文章所属分类,填写文章概要和文章内容。4.4.2 “文章管理”功能模块“文章管理”功能模块主要显示当前用户所写的所有文章,并能修改或者删除现有文章4.4.3 “评论管理”功能模块主要 php 操作代码:?phprequireconn.db.php;$action=$_GETaction;switch($action) case logout;function clearCookies() setcookie(username,);/删除 Cookie 中的标识符为 username 的变量clearCookie
15、s();echo ; break;case add:$name=$_POSTname;$categoryId=$_POSTcategoryId;$content=$_POSTcontent;$time=date(Y-m-dH:i:s);$sql=insert into article (motif,classify,content,time) values($name,$categoryId,$content,$time);$result= mysql_query($sql);$sql=select id from article where motif=$name and time=$tim
16、e;$result=mysql_query($sql);$row=mysql_fetch_array($result);$id=$rowid;$sql=insert into classify (title,art_id,time) values($categoryId,$id,$time);$result2= mysql_query($sql); if($result & $result2)echo sucess;echo ;elseechofault;echo ;break;case del:$id=$_GETid;$sql=delete from article where id=$id
17、;$result= mysql_query($sql); if($result)echo sucess;echo ;elseechofault;echo ;break;case cla_del:$id=$_GETid;$title=$_GETtitle;$sql=delete from classify where art_id=$id and title=$title;$result= mysql_query($sql); if($result)echo sucess;echo ;elseechofault;echo ;break;case com_del:$id=$_GETid;$time
18、=$_GETtime;$sql=delete from comment where art_id=$id and time=$time;$result= mysql_query($sql); if($result)echo sucess;echo ;elseechofault;echo ;break;case edit:$id=$_GETid;$name=$_POSTname;$categoryId=$_POSTcategoryId;$content=$_POSTcontent;$time=date(Y-m-dH:i:s);$sql=updatearticlesetmotif=$name,cl
19、assify=$categoryId,content=$content,time=$timewhere id=$id;$result= mysql_query($sql); if($result)echo sucess;echo ;elseechofault;echo ;break;case comment:$id=$_GETid;$name=$_COOKIEusername;$content=$_POSTcontent;$time=date(Y-m-dH:i:s);$sql=insert into comment (id,time,comment,user)values($id,$time,
20、$content,$name);$result= mysql_query($sql); if($result)echo sucess; echohttp-equiv=refreshcontent=1;URL=http:/127.0.0.1/tpl/default/displayBlog.htm?id=.$id. ;elseechofault; echohttp-equiv=refreshcontent=1;URL=http:/127.0.0.1/tpl/default/displayBlog.htm?id=.$id. ;break;case classify:$title=$_POSTtitl
21、e;$describe=$_POSTdescribe;$sql=insert into title (title,describe) values($title,$describe);$result= mysql_query($sql); if($result)echo sucess;echo ;metametaelseechofault;echo ;break;?5. 总 结通过对本系统的开发我深深收到了软件工程的重要性,一个软件项目有计划,需求分析,软件设计,编码,测试,运行维护等阶段,但基础在于软件需求分析,其是对“用户需求”进行更专业化的“描述”和转换。只有知道了用户真正的需求,才能做出更符合逻辑的程序;其次是测试,通过一次次的测试,调试出更符合用户需求的代码。