当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

11.2.7实现BLOG文章的编辑功能

9/17/2020 9:26:54 PM 人评论

11.2.7实现BLOG文章的编辑功能

11.2.7 实现BLOG文章的编辑功能

用户单击“编辑”链接后,进入日志文章的编辑界面。该编辑界面可以让用户修改日志文章的标题、修改文章内容,修改后提交,即可完成对日志文章的编辑。BLOG的编辑界面如图11-13所示。

图 11-13 日志文章的编辑界面

(1)编辑日志文章的程序,首先应该判断用户是否登录,也就是说只有登录用户才能执行日志文章的修改操作,这可以通过使用session来完成。

(2)还需要将要编辑的日志内容显示出来,以供用户修改。编辑日志文章内容的完整程序如代码11-10所示。

代码11-10 编辑日志文章的程序edit.php


01 <?php

02 session_start();

03 $ok=false;

04

05 if(!isset($_GET['entry']))//判断是否设置了$_GET['entry']的值

06 {

07 echo'请求参数错误;';

08 exit;

09 }

10

11 if(empty($_SESSION['user'])||$_SESSION['user']!='admin')//判断是否设置了这两变量的值

12 {

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

14 exit;

15 }

16

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

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

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

20

21 if(file_exists($file_name))//取出原文件内容

22 {

23 $fp=@fopen($file_name,'r');

24 if($fp)

25 {

26 flock($fp,LOCK_SH);

27 $result=fread($fp,filesize($file_name));

28 }

29 flock($fp,LOCK_UN);

30 fclose($fp);

31

32 $content_array=explode('|',$result);//将文件内容存放在数组中

33 }

34

35 if(isset($_POST['title'])&&isset($_POST['content']))

36 {

37 $title=trim($_POST['title']);//获取日志主题

38 $content=trim($_POST['content']);//获取日志内容

39

40 if(file_exists($file_name))//判断文件是否存在

41 {

42 //根据用户修改时提交的内容,替换现有文件的内容,注意替换的对应关系,即标题、内容各自对应

43 做替换

44 $blog_temp=str_replace($content_array[0],$title,$result);

45 $blog_str=str_replace($content_array[2],$content,$blog_temp);

46

47 $fp=@fopen($file_name,'w');

48 if($fp)

49 {

50 flock($fp,LOCK_EX);

51 $result=fwrite($fp,$blog_str);//写入文件

52 $lock=flock($fp,LOCK_UN);

53 fclose($fp);

54 }

55 }

56

57 if(strlen($result)>0)//判断修订是否成功

58 {

59 $ok=true;

60 $msg='日志修改成功,<a href="post.php?entry='.$_GET['entry'].'">查看该日志文章</a>';

61 }

62 }

63 ?>

64

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

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

67 <html>

68 <head>

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

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

71 </head>

72 <body>

73

74 <div id="container">

75 <div id="header">

76 <h1>我的BLOG</h1>

77 </div>

78 <div id="title">

79 ----I have dream……

80 </div>

81

82 <div id="left">

83 <div id="blog_entry">

84 <div id="blog_title">编辑日志</div>

85

86 <div id="blog_body">

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

88 {

89 ?>

90 <div id="blog_date"></div>

91 <table border="0">

92 <form method="POST"action="edit.php?entry=<?php echo$_GET['entry'];?>">

93 <tr><td>日志标题:</td></tr>

94 <tr><td><input type="text"name="title"size="50"value="<?php echo

95 $content_array[0];?>"></td></tr>

96 <tr><td>日志内容:</td></tr>

97 <tr><td><textarea name="content"cols="49"rows="10"><?php echo

98 $content_array[2];?></textarea></td></tr>

99 <tr><td>创建于:<?php echo date('Y-m-d H:i:s',$content_array[1]);?></td></tr>

100 <tr><td><input type="submit"value="提交"></td></tr>

101 </form>

102 </table>

103 <?php}?>

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

105 </div><!--blog_body-->

106 </div><!--blog_entry-->

107 </div>

108

109 <div id="right">

110 <div id="sidebar">

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

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

113 </div>

114 </div>

115

116 <div id="footer">

117 CopyRight 2011

118 </div>

119 </div>

120

121 <body>

122 </html>


【代码解析】编辑操作的实质是更改文件的内容。为此,首先从所要编辑的日志文章的文件中将文件内容全部取出,并存入数组中,如代码第21~33行所示。这个数组将在显示日志文章原有内容时使用,如代码91~102行所示。然后,程序根据用户传入的内容使用字符串替换函数str_replace(),将原有内容替换为新的内容,从而完成对日志文章的修改,如代码第44、45行所示。最后,还需要将最新的内容写回到文件中,如代码第47~54行所示。如果这一切都正常完成,程序会向用户发出日志修改成功的信息,如图11-14所示。

图 11-14 日志修改成功后的提示信息

相关教程

共有条评论 网友评论

验证码: 看不清楚?