PHP的新闻发布系统毕业论文(PHP教程)
来源:
互联网
日期:2013-1-29
Tc711Com提示:本系统我们采用PHP编程语言,MySQL数据库,Apache服务器等开发环境,来实现一个功能强大的新闻发布管理系统的网站。 该系统功能强大齐全,例如用户可以对自己的新闻进行发布,浏览其他新闻,对新闻的检索,以及对新闻进行评论。几乎可以满足大部分用户的各项需求。此系统不仅前台功能强大,而且后台管理系统更强大。管理员可以对新闻,新闻分类等模块进行分块管理。
|
.............省掉前后几章 (后面提供整个教程下载)
第五章 系统实现
5.1新闻发布首页
如图5-1是新闻发布系统的首页,该页面的功能包括:新闻浏览、新闻检索、会员登录以及管理员专用通道,用户点击相应的链接时会进入相应的功能页面。此新闻发布系统的首页分为除了有以上的链接功能外,还可以根据自己的需要去浏览具体要浏览的那一类新闻,在栏目导航中已经列出分类,点击即可浏览。热门文章的模块是针对新闻的点击次数进行排列,列出关注度最高的新闻。最新文章模块是针对新闻的发布时间进行排列,列出最新发布的新闻。
图5-1 系统首页
5.1.1 连接数据库的核心代码
数据库的连接是实现个性功能的前提。在连接数据库的时候,为了防止中文出现乱码的现象,我们在连接数据库的同时对编码进行了指定。统一采用gbk的中文编码,使得中文乱码现象得到解决。其核心代码如下:
1. <?php
2. $lnk = mysql_connect('localhost', 'root', '')
3. /*连接数据库,数据库名称密码为空*/
4. or die ('Not connected : ' . mysql_error()); /*无法连接,显示错误*/
5. mysql_select_db('news', $lnk) or die ('Can\'t use news : ' . mysql_error());
6. mysql_query("SET NAMES gbk"); ?> /*采用GBK编码*/
5.2分类浏览新闻
根据主页的栏目导航,我们可以点击国际新闻,点击以后弹出以新闻类型为国际新闻的所有相关新闻。如图5-2-1所示的分类浏览新闻页面。如果用户想要查看某条新闻的具体内容,用户只要点击网页中相应的新闻标题就可以浏览到新闻的详细内容。如图5-2-2所示的浏览新闻详细页面。
图5-2-1 分类浏览新闻页面
图5-2-2 浏览新闻详细页面
5.2.1 浏览分类浏览核心代码
1. <?php
2. $id=$_GET["id"]; /* 获取上个页面的一个id*/
3. $lnk = mysql_connect('localhost', 'root', '')
4. or die ('Not connected : ' . mysql_error()); /* 连接数据库*/
5. mysql_select_db('news', $lnk) or die ('Can\'t use news : ' . mysql_error());
6. mysql_query("SET NAMES gbk");
7. $sql="update article set clicktime=clicktime+1 where id=$id"; /* 增加点击数*/
8. $query=mysql_query($sql);
9. $sql="select * from article where id=$id"; /* 对新闻的文章进行筛选*/
10. $query=mysql_query($sql);
11. $row = mysql_fetch_array($query); ?>
12. /* 根据文章的点击次数显示关注度最高的新闻*/
13. <?php
14. $sql="select * from article order by clicktime desc limit 0,5"; /*筛选显示*/
15. $query=mysql_query($sql);
16. /*分页显示*/
17. <?php
18. $allrows =mysql_num_rows($query); /*获取数据库总数量*/
19. $pagesize=20; /*每页显示多少条*/
20. $page=$_GET["page"];
21. if($page=="")
22. {$page=1;}
23. $allpages=ceil($allrows/$pagesize); /*所有页数*/
24. $start=$page*$pagesize-20;
25. $sql="select * from article order by id desc limit $start,$pagesize"; /*筛选显示*/
26. ?>
5.3 新闻检索
新闻检索可以大大提高新闻的浏览速度,用户查询新闻时只需要在新闻检索栏中输入相应的关键字然后点击查询的,既可以得到相应的新闻页面。如图5-3-1添加一个新闻的关键字,然后再点击查询的按钮。如图5-3-2 得到的查询结果
图5-3-1 查询检索页面
图5-3-2 查询检索页面
5.3.1新闻检索核心代码
1. <?php
2. $lnk = mysql_connect('localhost', 'root', '') /*连接数据库*/
3. or die ('Not connected : ' . mysql_error());
4. mysql_select_db('news', $lnk) or die ('Can\'t use news : ' . mysql_error());
5. mysql_query("SET NAMES gbk");
6. $kw=$_GET["kw"];
7. $sql="select * from article where title like '%".$kw."%'"; /*模糊查询*/
8. $query=mysql_query($sql);
5.4 会员用户登录
限制用户的权限,会员用户登录的模块是必不可少的。在正常会员账户和密码都正确的情况下可以正常登录。如图5-4-1会员用户正常登录界面。 为了会员用户的账号安全我们在会员用户登录的时候加入的验证码。只要会员用户在3次输入错误的账号密码时,则需要验证码的输入。如图5-4-2加验证码登录。以便防止其他黑客用户采用暴力破解的手段来获取会员用户的账号和密码。
图5-4-1 会员用户正常登录界面
图5-4-2 加验证码登录界面
5.4.1会员用户登录核心代码
1. <?php
2. session_start(); /*启动一个session*/
3. if($_POST["action"]=="do")
4. {
5. $username=$_POST["username"];
6. $password=$_POST["password"];
7. $_SESSION["trytimes"]=$_SESSION["trytimes"]+1;
8. /*请在这里判断登陆*/
9. if($_SESSION["trytimes"]>3)
10. {
11. /*尝试大于3次则加验证码判断*/
12. if($_POST["code"]==$_SESSION["verifycode"])
13. {
14. $lnk = mysql_connect('localhost', 'root', '')
15. or die ('Not connected : ' . mysql_error());
16. mysql_select_db('news', $lnk) or die ('Can\'t use news : ' . mysql_error());
17. mysql_query("SET NAMES gbk");
18. $result=mysql_query("select count(*) from user where
19. username='$username' and password='$password'");
20. $row = mysql_fetch_array($result);
21. if($row[0]==0)
22. {
23. echo("<script language='javascript'>alert('用户名密码不匹配
24. ');window.location.href='userlogin.php';</script>");
25. exit(); }
26. else{
27. $_SESSION["username"]=$username;
28. echo("<script language='javascript'>alert('登陆成功
29. ');window.location.href='loginindex.php';</script>");
30. exit(); } }else{
31. echo("<script language='javascript'>alert('验证码错误
32. ');window.location.href='login.php';</script>"); } }
33. $lnk = mysql_connect('localhost', 'root', '')
34. or die ('Not connected : ' . mysql_error());
35. mysql_select_db('news', $lnk) or die ('Can\'t use news : ' . mysql_error());
36. mysql_query("SET NAMES gbk");
37. $result=mysql_query("select count(*) from user where username='$username' and password='$password'"); /*验证账户密码*/
38. $row = mysql_fetch_array($result);
39. if($row[0]==0){
40. echo("<script language='javascript'>alert('用户名密码不匹配
41. ');window.location.href='userlogin.php';</script>");
42. exit(); }
43. else{
44. $_SESSION["username"]=$username;
45. echo("<script language='javascript'>alert('登陆成功
46. ');window.location.href='loginindex.php';</script>");
47. exit(); } } ?>
5.5 会员登录后发表评论
会员用户登录以后才可以对新闻进行发表评论和查看新闻的所有评论。如下图5-5-1是新闻发表评论的主页面。用户可以对新闻进行评论,写好评论内容以后点击发表评论既可以成功发表评论。如图5-5-2编辑评论页面 。当评论信息成功发布以后,点击查看即可查看到用户的评论信息,如图5-5-3所示所有的评论信息。
图5-5-1 发表评论主页面
图5-5-2 编辑评论页面
图5-5-3 查看评论信息页面
5.51 发表评论核心代码
1. <?php
2. session_start(); /*启动一个session*/
3. $id=$_GET["id"]; /*获取一个id*/
4. $sql="select * from article where id=$id"; /*对数据库文章进行筛选*/
5. if($_POST["action"]=="do")
6. {
7. $author=$_POST["author"];
8. $content=$_POST["content"];
9. $username=$_SESSION['username'];
10. $time=date("Y-m-d");
11. $aid=$id;
12. $sql="insert into comment(author,content,date,aid)
13. values('$username','$content','$time','$aid')"; /*插入评论的内容*/
14. if(mysql_query($sql))
15. {echo("<script language='javascript'>alert('恭喜您,添加成功!
16. ');window.location.href='loginindex.php';</script>");
17. exit();} else{
18. echo("<script language='javascript'>alert('失败,请联系管理员!
19. ');window.location.href='index.php';</script>");
20. exit();}} ?>
5.6 新闻发布页面
如下图5-6是本新闻发布系统的新闻发布页面,新闻的ID数据库自动累加用户不需要对其进行编号。发布时间的也不需要用户添加,系统会帮你自动添加发布新闻的时间。新闻标题、作者、新闻来源、新闻类型以及新闻内容等则是用户必须编辑的内容,用户填写好要发布的新闻后点击发布,新闻成功发布后,系统将给与成功发布的信息提示。
图5-6 新闻发布页面
5.6.1新闻发布核心代码
1. <?php
2. $session_save_path = dirname(__FILE__)."/../include/sessions";
3. session_save_path($session_save_path); /*session存储路径*/
4. session_start(); /*启动一个session*/
5. if($_SESSION["username"]=="")
6. {
7. echo("<script language='javascript'>alert('您还没有登陆,请你先登陆后再操作
8. ');window.location.href='login.php';</script>");
9. exit(); } ?>
10. <?php
11. if($_POST["action"]=="do")
12. {
13. $title=$_POST["title"];
14. $writer=$_POST["writer"];
15. $come=$_POST["come"];
16. $content=$_POST["content"];
17. $classname=$_POST["classname"];
18. /*插入文章的内容*/
19. $sql="insert into article(title,writer,come,content,classname,time)
20. values('".$title."','".$writer."','".$come."','".$content."','".$classname."','".time()."')";
21. ?>
5.7 新闻管理页面
管理员用户登录以后点击新闻管理链接时,出现如图5-7-1所示的页面。此页面给予的权限是最高的,可以修改新闻和删除新闻,浏览需要修改的新闻内容点击操作选项:修改新闻和删除新闻。如果选择修改新闻则跳转到新闻修改页面。如图5-7-2新闻修改页面。如果用户是选择删除的操作,即点击要删除新闻所在行的删除操作,提示删除成功。如图5-7-3删除成功提示。成功删除以后,用户会重新回到此管理页面,所删除的新闻已经删除,浏览不到刚才删除的新闻内容。
图5-7-1 后台管理页面
图5-7-2 新闻修改页面
图5-7-2 新闻删除成功提示
5.71 新闻修改核心代码
1. <?php
2. if($_POST["action"]=="do") {
3. $title=$_POST["title"]; /*变量附值*/
4. $writer=$_POST["writer"];
5. $come=$_POST["come"];
6. $content=$_POST["content"];
7. $classname=$_POST["classname"];
8. $id=$_POST["id"];
9. /* 修改新闻内容*/
10. $sql="update article set
11. title='$title',writer='$writer',come='$come',content='$content',classname='$classnam
12. e' where id=$id";
13. ?>
5.72 新闻删除核心代码
1. <?php
2. $id=$_GET["id"];
3. $sql="delete from article where id=$id"; /*删除新闻*/
4. if(mysql_query($sql)) {
5. echo("<script language='javascript'>alert('恭喜您,删除成功!
6. ');window.location.href='index.php';</script>");
7. ?>
5.8新闻分类添加
为了方便用户对新闻的快捷浏览,我们设计了新闻的分类浏览功能。因此我们在的后台管理模块中要设计新闻分类添加模块。管理员登录后台以后,选择点击新闻类型添加,即可进入新闻分类添加的页面。如图5-8-1新闻分类添加页面。在类别名称后面的输入框中输入要添加的新闻分类,点击添加即可成功添加新闻分类,并弹出添加成功提示如图5-8-2 新闻分类添加成功提示。要想进一步查看添加的内容,如图5-8-3新闻分类添加成功页面。
图5-8-1 新闻分类添加页面
图5-8-2 新闻分类添加成功提示
图5-8-3 新闻分类添加成功查看页面
5.81 新闻分类添加核心代码
1. <?php
2. if($_POST["action"]=="do")
3. {
4. $classname=$_POST["classname"];
5. $sql="insert into class(classname) values('".$classname."')"; /*添加新闻分类*/
6. if(mysql_query($sql))
7. {
8. echo("<script language='javascript'>alert('恭喜您,添加成功!
9. ');window.location.href='index.php';</script>");
10. exit();} else{
11. echo("<script language='javascript'>alert('失败,请联系管理员!
12. ');window.location.href='index.php';</script>");
13. exit(); }}
14. ?>
5.9新闻分类管理
为了实现新闻分类管理,我们设计了新闻的分类添加功能。因此我们在的后台管理模块中也要设计新闻分类管理模块。管理员登录后台以后,选择点击新闻类型管理,即可进入新闻分类管理的页面。如图5-9-1新闻分类管理页面。 在不同新闻类别名称后面有添加和删除的两个管理操作。如果要对新闻分类进行修改,只需点击对应新闻分类行的修改,即可跳转到分类修改页面。如图5-8-2 新闻分类修改页面。
图5-9-1 新闻分类管理页面
图5-9-2 新闻分类添加成功页面
图5-9-3 新闻分类删除成功
5.81 新闻分类修改核心代码
15. <?php
16. if($_POST["action"]=="do")
17. {
18. $classname=$_POST["classname"];
19. $classid=$_POST["classid"]; /*获得参数传递*/
20. /*修改新闻类别*/
21. $sql="update class set classname='".$classname."' where classid=$classid";
22. if(mysql_query($sql))
23. {
24. echo("<script language='javascript'>alert('恭喜您,修改成功!
25. ');window.location.href='index.php';</script>");
26. exit();}
27. else{
28. echo("<script language='javascript'>alert('失败,请联系管理员!
29. ');window.location.href='index.php';</script>");
30. exit(); }}
31. ?>
5.82 新闻分类删除核心代码
32. <?php
33. $classid=$_GET["classid"]; /*获得参数传递*/
34. $sql="delete from class where classid=$classid"; /*删除用户分类*/
35. if(mysql_query($sql)) {
36. echo("<script language='javascript'>alert('恭喜您,删除成功!
37. ');window.location.href='index.php';</script>");
38. exit(); }
39. else{
40. echo("<script language='javascript'>alert('失败,请联系管理员!
41. ');window.location.href='index.php';</script>");
42. exit(); }
43. ?>
第六章 系统测试
6.1系统测试目的
本网站将会是企业内部网站中的子网站,要想实现一个完整的大型网站,网站系统测试是必须要完成的重要工作。
网站系统测试就是要根据网站的规划,将硬件资源、网络资源、以及网站等组合成稳定,可投入使用的一个真实的网站系统。首先网站系统要满足用户需求。其次,
在系统设计中,稳定性是整个系统测试的关键。
6.2系统测试的方法
系统测试的方法就是把各个网页以及各项功能模块装配成一个完整的系统。并测试各项功能,查找是否有设计上缺陷或是编写代码时的错误,完成预期的各项功能, 满足用户的需求。
本网站采取的测试方法是先对每个模块进行单独测试,确保准确无误。调试成功以后,再进行整合测试。确保整个网站功能流程顺利进行。
在开发后台管理模块中,为了保证后台管理系统的安全性,管理后台系统只有管理员才有权进行管理其他普通的用户则是无权进入。因此,我们用Session的在判断用户的身份,给予不同的操作权限。因此,在系统测试中,各个网页的session值是否能正常安全的相互之间传递,是保证整个系统的权限划分和实现的关键。Session保存在服务器端,只对当前打开的浏览器有效,当浏览器关闭时,Session将自动被清空。安全性较高。因此,我们采用Session判断用户的权限。
6.3系统测试
6.3.1系统前台测试
在新闻发布系统的网站中, 每个功能模块完成一项功能,并且每项功能模块和同级其他功能模块没有相互依赖关系。因此,可以把每个模块作为一个单独的系统来测试。
我们先进行系统前台测试,首先运行APACHE服务器,然后在IE地址栏中输入:http://localhost进入新闻发布系统网站的主页界面,如图6-1所示。
图6-1 系统主页
点击首页中的登录,会员用户即可登陆页面输入用户名和密码即可进入登陆后的网站主页网站首页,并且给会员用户一个欢迎的标语。如图6-2所示。
图6-2 会员登陆后的主页
进入会员登录后的主页点击相应的连接即可进入各个模块。经过测试,各个模块之间的链接都已经达到预期目标。
6.3.2后台管理测试
系统运行以后,权限的问题在每个网页都有。因此,在后台管理系统运行中要确保每个页面之间是否可以正常传递管理员的账户信息。确保后台正常安全的运行。
首先,我们先用管理员admin这个账号来进行登陆,登陆后进入新闻发布系统后台会出现以下界面,如图6-3所示:
图6-3 管理员登陆界面
登录以后管理员用户就可以发布新闻,管理新闻和添加新闻分类管理新闻分类等等。如果,我们再用其他普通会员用户bob这个账号来进行登陆测试,系统无法登陆,如图6-3所示。
图6-3 用户不匹配
最后,经过多次测试,本系统已经实现了新闻发布系统的各项基本功能,运行状态良好,无错误出现。
6.4 系统权限核心代码
6.4.1用户标识及权限设置代码
1. <?php
2. $session_save_path = dirname(__FILE__)."/../include/sessions"; /*Session存储路径*/
3. session_save_path($session_save_path);
4. session_start(); /*启动Session*/
5. if($_SESSION["username"]=="")
6. {
7. echo("<script language='javascript'>alert('您还没有登陆,请你先登陆后再操作
8. ');window.location.href='login.php';</script>");
9. exit();} ?>
下载: http://bbs.tc711.com/thread-7322-1-1.html
更多的PHP的新闻发布系统毕业论文(PHP教程)请到论坛查看: http://BBS.TC711.COM
【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】
来源:
互联网
日期:2013-1-29
|
|
|