php博客系统论文 (附加程序代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要
摘要
“博客”一词是从英文单词Blog翻译而来。

Blog是Weblog的简称,而Weblog 则是由Web和Log两个英文单词组合而成。

Weblog就是在网络上发布和阅读的流水记录,通常称为“网络日志”,简称为“网志”。

课题的开发目标:这次的毕业设计最终目标是要建立一个Blog网站。

基于B/S结构的Blog网站以WINDOWS 2000为平台,使用PHP和My sql数据库的技术开发服务器端应用。

Blog网站主要采用PHP, HTML、My sql数据库、JavaScript 等技术开发,整体设计遵循软件工程的方法。

该Blog网站分为4个模块:系统设置管理、会员信息管理、博客日志管理和管理员信息管理,具备如下的基本功能:
(1)会员信息管理:后台管理员审核新注册的会员信息,改删会员信息。

(2)博客日志管理:包括日志分类和日志中心。

(3)管理员信息管理:管理员可以添加管理员,修改后台登陆密码。

(4)系统设置管理:管理系统日志,系统设置,退出管理。

关键词: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图 (2)
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 基本设置修改
用户可以修改一些基本信息:头像修改、性别修改、所在地修改、个人网站修改、签名修改、空间背景图片修改、空间地址修改、个性网址修改,是否分享日志、是否关闭空间、密码修改、当前状态修改等等。

1.2系统运行环境
操作系统:Windows2000, WindowsXP, Windows vista
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用户信息表
字段类型Null 默认
user_id int(10) 是NULL
username varchar(64) 是
password varchar(64) 是
mailadres varchar(100) 是
user_pic varchar(255) 是NULL
user_province varchar(16) 是NULL
signupdate varchar(20) 是
user_gender varchar(8) 是NULL
user_web varchar(255) 是NULL
user_info varchar(255) 是
这家伙很懒,什么也没写。

isadmin int(1) 是0 isclose int(1) 是0 last_login int(10) 是0 domain varchar(20) 是NULL blog_num int(5) 是0 friend_num int(5) 是0 pic_num int(5) 是0 fav_num int(5) 是0 share_blog int(1) 是 1 total_click int(10) 是0 clickday int(10) 是0
ip varchar(20) 是0
state_read varchar(200) 是
这家伙很懒,什么也没写。

state_listen varchar(200) 是
这家伙很懒,什么也没写。

state_enjoy varchar(200) 是
这家伙很懒,什么也没写。

backimg varchar(255) 是NULL note text 是NULL fanfou varchar(64) 是NULL
淮安信息职业技术学院毕业设计论文
auth_email varchar(50) 是0 tonsenz varchar(64) 是NULL
表 2.2 好友表
字段类型Null 默认
fri_id int(5) 是NULL
fid_jieshou int(5) 是
fid_fasong int(5) 是
isfriend int(1) 是 3
make_time int(10) 是
表 2.3 消息表
字段类型Null 默认hi_id int(10) 是NULL
js_uid int(10) 是
send_uid int(10) 是
send_uname varchar(60) 是
hi_time int(10) 是
表2.4评论表
字段类型Null 默认
reply_id int(10) 是NULL share_id int(10) 是
share_uid int(10) 是
reply_body Text 是
reply_time int(10) 是
reply_uid int(10) 是
reply_uname varchar(64) 是
reply_upic varchar(255) 是
type varchar(8) 是网页
表2.5文章表
字段类型Null 默认share_id int(10) 是NULL user_id int(10) 是
user_name varchar(64) 是
user_pic varchar(255) 是
第二章系统的工作流程
content_body Text 是
share_time varchar(20) 是
type varchar(10) 是网页reply_times int(10) 是0
is_share int(1) 是 1
第三章具体实施步骤
3.1界面设计
如上所述,本网站的设计风格为简洁、清新,部分页面设计如下:个人页面主页如下:
随便看看页面如下:
图3-1 设计页面
个人设置页面如下:
图3-2 个人设置
3.2各功能模块的设计
3.2.1 用户登录
图3-3 用户登录
系统主页上所提供的服务,只是一些公共的服务,用户要获得更多的服务,必须先登录。

登录框设在系统主页上,用户可在该页面输入自己的用户名和密码,系统将会按类别对用户名和密码进行验证,如果名字和密码都正确将被连接到各自的用户界面上去,例如普通用户正确登录后将连接到用户页面中去,否则提示用户输入的密码或用户名不正确。

该页面使用查询数据库匹配数据来验证登录者的身份。

实现按类别查询的语句是:
$mailadres1 = $_POST["mailadres"];
$password1 = md5($_POST["password"]);
$rememberMe = $_POST["rememberMe"];
$sql = "Select password,last_login from ".$DBprefix."users where
mailadres='$mailadres1' or user_id='$mailadres1' or username='$mailadres1'";
$query = $db->query($sql);
if ($row = $db->fetch_array($query)){
if ($row["password"] == $password1){
if ($rememberMe=="on") {
setcookie("rememberCookieUname",$mailadres1,(time()+604800));
淮安信息职业技术学院毕业设计论文
setcookie("rememberCookiePassword",md5($password1),(time()+604800));
}
else {
setcookie("rememberCookieUname",$mailadres1);
setcookie("rememberCookiePassword",md5($password1));
}
3.2.2 文章管理
当用户已经登录的情况下,就可以对文章进行发表、修改、删除等功能的操作了,图3 -4为文章发表页面,用户可以发表自己喜欢的文章或者自己想说的话。

图3-4 文章管理
这部分的实现主要是先判断用户是否是登录状态,如果是登录状态则可以进行文章发表操作,在用户书写完自己的日志时点击发表即可,倘若用户没有输入任何数据直接点击发表则会弹出提示,提醒用户输入文章,如图3 -5
图3-5 提醒
当用户正确发表文章时,程序将把用户发表的文章存入的数据库中,并对数据库中的一些项进行更新,比如当前网站总共多少文章、该用户发表了多少篇文章等
if ($action =="home.php?add") {
$content = $_POST["content"];
$content=str_replace("<","",$content);
$content=str_replace(">","",$content);
$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="@<a href=\"$webaddr/home/u.$js_uid \">$js_name</a>
$js_msg";
else
$content="@<a href=\"$webaddr/home.php?uid=$js_uid \">$js_name</a> $js_msg";
if ($js_uid) {
$query1 = "INSERT INTO ".$DBprefix."share
(user_id,user_name,user_pic,content_body,share_time) V ALUES
('$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) V ALUES
('$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) V ALUES
('$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) V ALUES
('$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';
}
删除文章
当用户对自己发表的文章不满意时可以进行删除文章操作,这里以删除上面那条‘11111’为例,图3 -6为删除前,图3-7为删除后
图3-6删除前
图3-7删除后
删除操作的要求是必须是登录用户,还有必须是自己发表的文章,其他人的文章不能删除,进行删除操作时,系统先向数据库匹配用户信息与文章信息,如果全都属实,则会继续匹配要删除文章的id,然后执行删除操作。

if ($del=="home_del" && ($uid==$user_id)) {
$shareid=$_GET['sid'];
$query = "DELETE FROM ".$DBprefix."share WHERE share_id='$shareid'";
mysql_query($query);
$query2 = "DELETE FROM ".$DBprefix."reply WHERE share_id='$shareid'";
mysql_query($query2);
3.2.3 评论管理
添加评论
与文章管理类似,用户可以对文章发表自己的见解,如图3-8
图3-8发表见解
同样的不能发表空的评论,如图3-9
图3-9空评论提示
当用户成功添加评论后,系统将该评论内容写入数据库,更新数据,并且在页面上显示回复内容。

$query = "INSERT INTO ".$DBprefix."reply
(share_id,share_uid,reply_body,reply_time,reply_uid,reply_uname,reply_upic)
V ALUES
('$shareid','$shareuid','$content','$addtime','$user_id','$user_name','$user_pic')";
mysql_query($query);
$sql = "select reply_times from ".$DBprefix."share where share_id='$shareid'";
$query = $db->query($sql);
$data = $db->fetch_array($query);
$reply_times=$data['reply_times'];
$reply_times=$reply_times+1;
$query2 = "UPDATE ".$DBprefix."share SET reply_times = '$reply_times' where share_id='$shareid'";
mysql_query($query2);
if ($rewrite==1)
header("location: $webaddr/viewblog/$shareid");
else
header("location: $webaddr/viewblog.php?id=$shareid");
}
删除评论
当用户对自己发表的文章不满意时可以进行删除文章操作,这里以删除上面那条‘你好啊’为例,图3-10为删除前,图3-11为删除后
图3-10重新发表提示
图3-11删除后
同删除文章类似,必须是登录用户,而且只能对针对自己发表的文章的评论进行删除操作,别人的文章则不行,删除后更新数据库,以便在页面上同步显示。

if ($act=="del") {
$reid=$_GET['reid'];
$sid=$_GET['sid'];
$query = "DELETE FROM ".$DBprefix."reply WHERE reply_id='$reid'";
mysql_query($query);
$sql = "select reply_times from ".$DBprefix."share where share_id='$sid'";
$query2 = $db->query($sql);
$data = $db->fetch_array($query2);
$reply_times=$data['reply_times'];
$reply_times=$reply_times-1;
$query3 = "UPDATE ".$DBprefix."share SET reply_times='$reply_times' where share_id='$sid'";
mysql_query($query3);
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好友显示下面为完整的加为好友源代码
<?PHP
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) V ALUES ('$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 "<script>alert(\"提示:您已经同意了加为好友的邀请!
\");window.location.href='$prev';</script>";
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) V ALUES ('$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 "<script>alert(\"提示:您已经拒绝了加为好友的邀请!
\");window.location.href='$prev';</script>";
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程序设计人民邮电出版社。

相关文档
最新文档