
“博客”一词是从英文单词Blog翻译而来。Blog是Weblog的简称,而Weblog则是由Web和Log两个英文单词组合而成。Weblog就是在网络上发布和阅读的流水记录,通常称为“网络日志”,简称为“网志”。
课题的开发目标:这次的课程设计最终目标是要建立一个Blog网站。基于B/S结构的Blog网站以WINDOWS为平台,使用PHP和My sql数据库的技术开发服务器端应用。Blog网站主要采用PHP, HTML、My sql数据库、JavaScript等技术开发,整体设计遵循软件工程的方法。该Blog网站主要具备如下的基本功能: 如发表、查询、删除和分页浏览博客文章,发表、删除文章评论,查询、上传、删除分页浏览图片,添加、查询、删除、分页浏览朋友圈,以及查询、浏览和删除用户信息等。
关键词:PHP blog mysql
目录
摘要 I
目录 II
第一章 博客系统总体概括 1
1.1博客系统要求 1
1.1.1 登录注销 1
1.1.2 文章管理 1
1.1.3 评论管理 1
1.1.4 留言管理 1
1.1.5 基本设置修改 1
1.2系统运行环境 1
1.3研究该系统所要解决的问题 1
第二章 系统的工作流程 2
2.1服务流程(系统功能开放后) 2
2.2网站总体结构 2
2.3数据库设计 2
2.3.1 E-R图 3
2.3.2 数据字典 3
第三章 具体实施步骤 6
3.1界面设计 6
3.2各功能模块的设计 7
3.2.1 用户登录 7
3.2.2 文章管理 8
3.2.3 评论管理 11
3.2.4 留言管理 14
3.2.5 好友管理 14
第四章 总结与展望 19
4.1总结 19
4.2展望 19
致 谢 20
参考文献 21
第一章 博客系统总体概括
1.1博客系统要求
1.1.1 登录注销
登录:用户只有在登录状态下才能进行浏览以及其他功能
注册:注册新用户
1.1.2 文章管理
发表文章:用户可以发表自己的文章,以便自己或者其他人查看
删除文章:只有超级用户可以对文章进行删除
1.1.3 图片管理
添加图片:用户可以添加自己所需图片
浏览图片:用户可以对已添加的图片进行浏览
查询图片:用户可以进行查询图片并进行删除
1.1.4 朋友圈管理
添加到朋友圈:用户可以通过输入好友信息添加到朋友圈
浏览我的朋友:用户可以浏览自己的朋友
查询朋友信息:用户可以通过输入姓名或编号查询好友
1.1.5 用户管理
查询用户信息:用户可以通过输入用户名和ID来进行查询用户信息
浏览用户信息:点击浏览用户信息就可以浏览所有的用户资料;
1.2系统运行环境
操作系统:Windows
1.3研究该系统所要解决的问题
如何设计数据库,使之不仅能满足用户对系统提出的要求,而且可靠高效。
设计界面。一个简洁实用的界面是有必要的。
如何实现用户之间消息的传递。
如何实现数据库的更新与操作。
第二章 系统的工作流程
2.1服务流程(系统功能开放后)
因为网站属于实名认证的,所以用户在注册后必须等待认证,认证通过后方能使用网站的功能,同时网站会自动为用户生成blog空间,以及其他的相关功能都无需用户再次设置,只需一次注册,即可在整个网站畅游
2.2网站流程结构
网站流程结构图,如图 2-1所示:
图2-1网站流程图
2.3数据库设计
由于本网站需处理大量的数据,因而选择好的数据库管理系统并设计好数据库便显得异常重要了。有了好的数据库,可便于进行查询,插入删除等数据操作,提高系统的效率,也便于管理。所以选择了MySql 作为数据库管理系统,数据库设计如下:
2.3.1 E-R图
图2-2 用户功能
2.3.2 数据字典
表2.1用户信息数据表(tb_user表)
表 2.2 博客文章表(tb_article表)
表 2.3 文章评论表(tb_filecomment表)
表2.4朋友圈信息表(tb_friend表)
表2.5图片信息表(tb_tpsc)
第三章 具体实施步骤
3.1界面设计
如上所述,本网站的设计风格为简洁、清新,部分页面设计如下:主页页面如下:
主页如下:
图3-1 设计页面
3.2各功能模块的设计
3.2.1 用户登录和注册
图3-3 用户登录
图3-4登录成功后
图3-5注册
系统主页上所提供的服务,只是一些浏览等普通功能的服务,用户要获得更多的服务,必须先登录。登录框设在系统主页上,用户可在该页面输入自己的用户名和密码,系统将会按类别对用户名和密码进行验证,如果名字和密码都正确将被连接到各自的登录成功的界面上,例如普通用户正确登录后将连接到添加博客文章的页面中去,否则提示用户输入的密码或用户名不正确。该页面使用查询数据库匹配数据来验证登录者的身份。
实现按类别查询的语句是:
session_start();
include "../Conn/conn.php";
$name=$_POST[txt_user];
$pwd=$_POST[txt_pwd];
$_SESSION[username]=$name;
$sql=mysql_query("select * from tb_user where regname='".$name."' and regpwd='".$pwd."'");
$result=mysql_fetch_array($sql);
if($result!=""){
$_SESSION[fig]=$result[fig];
?>
}else{
?>
}
?>
3.2.2 文章管理
当用户已经登录的情况下,就可以对文章进行发表、删除等功能的操作了,图3 -4为文章发表页面,用户可以发表自己喜欢的文章或者自己想说的话。
图3-4 文章管理
这部分的实现主要是先判断用户是否是登录状态,如果是登录状态则可以进行文章发表操作,在用户书写完自己的日志时点击发表即可,倘若用户没有输入任何数据直接点击发表则会弹出提示,提醒用户输入文章,如图3 -5
图3-5 提醒
当用户正确发表文章时,程序将把用户发表的文章存入的数据库中,并对数据库中的一些项进行更新,比如当前网站总共多少文章、该用户发表了多少篇文章等
if ($action =="home.php?add") {
$content = $_POST["content"];
$content=str_replace("<
$content=str_replace(">
$content=replace($content,$replace);
if ($content!="") {
$s1=explode("@",$content);
if ($s1[1]) {
$s2=explode(" ",$s1[1]);
$js_name=$s2[0];
$js_msg=$s2[1];
$sql = "SELECT user_id FROM ".$DBprefix."users where username='$js_name'";
$query = $db->query($sql);
$data = $db->fetch_array($query);
$js_uid=$data['user_id'];
if ($rewrite==1)
$content="@$js_name $js_msg";
else
$content="@$js_name $js_msg";
if ($js_uid) {
$query1 = "INSERT INTO ".$DBprefix."share (user_id,user_name,user_pic,content_body,share_time) VALUES ('$user_id','$user_name','$user_pic','$content','$addtime')";
mysql_query($query1);
$query2= "INSERT INTO ".$DBprefix."messages (js_id,fs_id,fs_name,fs_pic,message_body,m_time) VALUES ('$js_uid','$user_id','$user_name','$user_pic','$content','$addtime')";
mysql_query($query2);
$bnum=$blog_num+1;
$query3 = "UPDATE ".$DBprefix."users SET blog_num='$bnum' where user_id='$user_id'";
mysql_query($query3);
}
}
else {
if ($share_blog==1)
{
$query1 = "INSERT INTO ".$DBprefix."share (user_id,user_name,user_pic,content_body,share_time) VALUES ('$user_id','$user_name','$user_pic','$content','$addtime')";
mysql_query($query1);
}
else
{
$query1 = "INSERT INTO ".$DBprefix."share (user_id,user_name,user_pic,content_body,share_time,is_share) VALUES ('$user_id','$user_name','$user_pic','$content','$addtime','0')";
mysql_query($query1);
}
$bnum=$blog_num+1;
$query3 = "UPDATE ".$DBprefix."users SET blog_num='$bnum' where user_id='$user_id'";
mysql_query($query3);
require_once 'sendtominiblog.php';
}
浏览文章
用户或者游客可以发表的文章进行浏览,超级用户具有删除文章的功能
图3-6 浏览文章
图3-7查询文章
删除操作的要求是必须是登录用户,还有必须是自己发表的文章,其他人的文章不能删除,进行删除操作时,系统先向数据库匹配用户信息与文章信息,如果全都属实,则会继续匹配要删除文章的id,然后执行删除操作。
include "../Conn/conn.php";
$sql="delete from tb_filecomment where id=".$comment_id;
$result=mysql_query($sql);
if($result){
echo "";
}
else{
echo "";
}
?>
3.2.3 图片管理
添加图片
图3-8添加图片
当用户成功添加图片后,系统将该评论内容写入数据库,更新数据,并且在页面上显示图片。
查询图片
3.2.4 朋友圈管理
添加留言
同文章以及评论类似,这里就不赘述了
删除留言
同文章以及评论类似,这里就不赘述了
3.2.5 好友管理
添加好友
当用户想添加好友的时候,需要向对方发送好友申请等待对方的同意,当对方同意的时好友添加成功,如果对方不同意,则好友添加失败。现在我想添加admin为我的好友,点击加为好友,如图3-12,弹出图3-13对话点击返回,等待对方的确认。对方可以选择同意或者拒绝,如图3-13选择同意或者拒绝会弹出图3-14的对话框,
如果同意好友申请,点击确定后在好友页面中会有好友显示,如图3-15显示。
图3-12申请
图3-13申请 同意否
图3-14 拒绝提示
图3-15好友显示
下面为完整的加为好友源代码
require_once 'common.php';
if (!$user_id){
if ($rewrite==1)
header("location: $webaddr/login/notlogin");
else
header("location: $webaddr/login.php?action=notlogin");
}
$action=$_GET["action"];
$fsid= $_GET["fs"];
$jsid= $_GET["js"];
$mid= $_GET["mid"];
if ($action=="yes" && $user_id==$jsid) {
$query = "UPDATE ".$DBprefix."friend SET isfriend = '1' where fid_jieshou='$fsid' && fid_fasong='$user_id'";
mysql_query($query);
$query1 = "UPDATE ".$DBprefix."friend SET isfriend = '1',make_time='$addtime' where fid_jieshou='$user_id' && fid_fasong='$fsid'";
mysql_query($query1);
$query3 = "select friend_num from ".$DBprefix."users where user_id='$fsid'";
$result3=mysql_query($query3);
$data3 = @mysql_fetch_array($result3);
$ffnum=$data3['friend_num'];
$mes=$user_name." 已经同意您加为好友的邀请,并加你为好友!";
$query2 = "INSERT INTO ".$DBprefix."messages (js_id,fs_name,message_body,m_time) VALUES ('$fsid','系统管理员','$mes','$addtime')";
mysql_query($query2);
$frnum=$friend_num+1;
$query33 = "UPDATE ".$DBprefix."users SET friend_num='$frnum' where user_id='$user_id'";
mysql_query($query33);
$ffnum=$ffnum+1;
$query44 = "UPDATE ".$DBprefix."users SET friend_num='$ffnum' where user_id='$fsid'";
mysql_query($query44);
$query6 = "DELETE FROM ".$DBprefix."messages WHERE message_id='$mid'";
mysql_query($query6);
echo "";
exit;
}
if ($action=="no" && $user_id==$jsid) {
$query3 = "select username from ".$DBprefix."users where user_id='$jsid'";
$result3=mysql_query($query3);
$data3 = @mysql_fetch_array($result3);
$fname=$data3['username'];
$mes=$fname." 拒绝您加为好友的邀请!";
$query2 = "INSERT INTO ".$DBprefix."messages (js_id,fs_name,message_body,m_time) VALUES ('$fsid','系统管理员','$mes','$addtime')";
mysql_query($query2);
$query = "DELETE FROM ".$DBprefix."friend WHERE fid_jieshou='$fsid' && fid_fasong='$user_id'";
mysql_query($query);
$query4 = "DELETE FROM ".$DBprefix."friend WHERE fid_jieshou='$user_id' && fid_fasong='$fsid'";
mysql_query($query4);
$query6 = "DELETE FROM ".$DBprefix."messages WHERE message_id='$mid'";
mysql_query($query6);
echo "";
exit;
}
?>
基本设置修改
用户可以更改自己的基本信息、密码、状态等,当保存的时候更新数据库中现有的数据如下图。
图3-16基本信息
第四章 总结与展望
4.1总结
毕业设计(论文)是大学生活的重要组成部分,是对一个学生大学学习成果的重要检验。本博客系统是我第一次完整地按照软件工程的要求,从需求分析、系统设计、详细设计到编码和软件测试所开发的系统。在蔡斌老师的指导下和同学们的帮助下,我通过自己的努力,成功地开发了该系统。
最重要的一个体会是:一个人的能力(包括设计和编程等)是在实践中提高的;以及团队合作的重要性体现。
4.2展望
本系统做的还不够完善,以后如果有机会,我会把它增添更多功能,如帐号关联登录及小游戏板块等。
致 谢
我能顺利的完成毕业设计论文,首先要感谢蔡斌老师对我的悉心指导及对我的论文的很多的不足的地方都很耐心的提出了修改的方案。当老师发现论文中的内容有很多知识不是很全面的时候,帮忙搜集了很都很有帮助的文献。
还要感谢同学们,他们在我的论文的思路方面提的很多的宝贵的意见。再次感谢顾同学百忙之中帮我试运行我的博客系统和阅读、修改我的论文,还有其他同学们在这次设计中给予我的帮助。
参考文献
[1]guide_to_php_design_pattern---php设计模式
[2]Symfony权威指南 FabienPo
[3]PHP程序设计O'REILLY---英文版
[4]PHP圣经
[5]PHP 5 Power Programming---PHP5 强编程
[6]PHP从入门到精通学习源码例子参考书为《PHP从入门到精通》,化学工业出版社陈超等编著
[7] PHP与MySQL程序设计人民邮电出版社
