PHP学习 文件操作函数的应用--简单网络留言模板

 1 <?php
 2 /**
 3     网络留言板模式
 4     主要运用到的函数有
 5         fopen fclose flock fwrite fread explode list
 6 */
 7 ?>
 8 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 9 <?php error_reporting(E_ALL && !E_NOTICE) ?>
10 <html>
11     <head>
12         <title>网络留言板模式</title>
13     </head>
14     <body>
15         <?php
16             //声明变量来保存文件名
17             $filename = "data_text.txt";
18             
19             //判断用户是否提交 若是则写入文件
20             if(isset($_POST["sub"])){
21                 //将三条信息整合成一条,用”||“隔开 用”<|>“结束
22                 $message = $_POST["username"]."||".$_POST["title"]."||".$_POST["mess"]."<|>";
23                 writeMessage($filename,$message    );
24             }
25             
26             //文件存在则读取数据
27             if(file_exists($filename))
28                 readMessage($filename);
29             
30             /**
31                 自定义一个向文件中写入数据的函数
32             */
33             function writeMessage($filename,$message){
34                 $fp = fopen($filename,"a");//以追加模式打开文件
35                 if(flock($fp,LOCK_EX)){
36                     fwrite($fp,$message);
37                     flock($fp,LOCK_UN);
38                 }else{
39                     echo "不能锁定文件";
40                 }
41                 fclose($fp);
42             }
43             
44             /**
45                 自定义一个遍历读取文件的函数
46             */
47             function readMessage($filename){
48                 $fp = fopen($filename,"r");
49                 flock($fp,LOCK_SH);
50                 $buffer = "";
51                 //将文件中的数据读入到$buffer中
52                 while(!feof($fp))
53                     $buffer .= fread($fp,1024);
54                 //通过”<|>“将每行留言分隔并存入数组中
55                 $data = explode("<|>",$buffer);
56                 //遍历数组并将每行数据再分隔
57                 foreach($data as $line){
58                     list($username,$title,$message) = explode("||",$line);
59                     if($username != "" && $title != "" && $message != ""){
60                         echo $username.'说';
61                         echo '&nbsp;'.$title.',';
62                         echo $message."<hr>";
63                     }
64                 }
65                 flock($fp,LOCK_UN);
66                 fclose($fp);
67             }
68         ?>
69         
70         
71         <!--以下为用户输入表单-->
72         <form action="" method = "post">
73             用户名:<input type = "text" size = 10 name="username"><br>
74             标&nbsp;&nbsp;题:<input type = "text" size = 30 name = "title"><br>
75             <textarea name = "mess" rows = 4 cols = 38>请在这里留言</textarea>
76             <input type = "submit" name = "sub" value = "留言">
77         </form>
78     </body>
79 </html>

如果有用户留言 则将留言内容保存到文件

自定义保存样式 通过explode函数将其分隔

判断保存留言的文件是否存在 若是则输出

输出的留言是将文件里的内容分解出来的 主要用到函数有:list explode