文章教程

11.2.8实现BLOG文章的删除功能

9/17/2020 9:26:54 PM 人评论 次浏览

11.2.8 实现BLOG文章的删除功能

删除日志文章也是BLOG系统的基本功能之一,本小节向读者介绍删除日志文章功能的实现。删除一篇日志文章的基本操作是,找到日志文章所在路径和文件,然后执行删除操作。对于不存在的日志执行删除操作,应该给出“所要删除的日志不存在”的提示信息。

当用户单击“删除”链接后,应该给用户一个提示界面,确认用户是否真的想删除该日志文章,以免用户误操作。另外,和编辑日志文章一样,只能在用户登录之后才能执行删除操作。

因为删除确认界面和执行删除操作的功能由同一个程序实现,所以这里通过向程序传入两个不同的URL参数,以便程序可以判断是显示“删除确认界面”还是执行删除操作,这两个参数是entry和id,其中id将作为表单隐藏域数据,传给删除程序。如果程序获得id参数,则表示要执行删除操作,参数id的值和参数entry的值完全一样,它们只是用来区分不同的操作。删除日志文章的程序如代码11-11所示。

代码11-11 删除日志文章的程序delete.php


01 <?php

02 session_start();

03 $ok=false;

04

05 if(empty($_SESSION['user'])||$_SESSION['user']!='admin')//判断用户是否登录

06 {

07 echo'请<a href="login.php">登录</a>后执行该操作。';

08 exit;

09 }

10

11 if(!isset($_GET['entry']))//判断$_GET['entry']变量是否已经设置了

12 {

13 if(!isset($_POST['id']))//判断是否有id参数

14 {

15 $ok=true;

16 $msg='请求参数错误;<a href="index.php">返回首页</a>';

17 }

18 else

19 {

20 //做删除操作

21 $path=substr($_POST['id'],0,6);//日志存储目录

22 $entry=substr($_POST['id'],7,9);//日志文件名称

23 $file_name='contents/'.$path.'/'.$entry.'.txt';

24 if(unlink($file_name))

25 {

26 $ok=true;

27 $msg='该日志成功删除;<a href="index.php">返回首页</a>';

28 }

29 else

30 {

31 $ok=true;

32 $msg='该日志删除失败;<a href="index.php">返回首页</a>';

33 }

34 }

35 }

36 else

37 {

38 $form_data='';

39 $path=substr($_GET['entry'],0,6);//日志存储目录

40 $entry=substr($_GET['entry'],7,9);//日志文件名称

41 $file_name='contents/'.$path.'/'.$entry.'.txt';

42 if(file_exists($file_name))//判断是否已经存在该文件

43 {

44 $form_data='<input type="hidden"name="id"value="'.$_GET['entry'].'">';

45 }

46 else

47 {

48 $ok=true;

49 $msg='所要删除的日志不存在;<a href="index.php">返回首页</a>';

50 }

51 }

52 ?>

53

54 <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"

55 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

56 <html>

57 <head>

58 <title>基于文本的简易BLOG</title>

59 <link rel="stylesheet"type="text/css"href="style.css"/>

60 </head>

61 <body>

62

63 <div id="container">

64 <div id="header">

65 <h1>我的BLOG</h1>

66 </div>

67 <div id="title">

68 ----i have dream……

69 </div>

70 <div id="left">

71 <div id="blog_entry">

72 <div id="blog_title">删除日志</div>

73 <div id="blog_body">

74 <?php if($ok==false)

75 {

76 ?>

77 <form method="POST"action="delete.php">

78 <font color="red">删除的日志将无法恢复,确定要删除吗?</font><br/>

79 <input type=submit value="确定">

80 <?php echo$form_data;?>

81 </form>

82 <?php}?>

83 <?php if($ok==true){echo$msg;}?>

84 </div><!--blog_body-->

85 </div><!--blog_entry-->

86 </div>

87

88 <div id="right">

89 <div id="sidebar">

90 <div id="menu_title">关于我</div>

91 <div id="menu_body">我是个PHP爱好者</div>

92 </div>

93 </div>

94

95 <div id="footer">

96 copyright 2011

97 </div>

98 </div>

99

100 <body>

101 </html>


【代码解析】该程序首先根据session判断用户是否登录,没有登录则提示用户登录后再执行删除操作,如代码第5~9行所示。如果已经登录,根据是否传入URL参数entry,来判断是显示“删除确认界面”还是执行删除操作。如果没有传入entry参数,则判断是否传入日志文章id,程序将根据此id删除日志文章。如果传入id,则执行删除操作。当用户登录后,单击删除链接,将会看到如图11-15所示的确认界面。

图 11-15 删除日志文章确认界面

在此确认界面中,单击“确定”按钮,将会删除该日志文章。如果删除成功,将会看到如图11-16所示的“该日志成功删除”提示信息。

图 11-16 成功删除日志文章后的提示界面

教程类别