• 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

  • 相关阅读:
    labview dll 崩溃
    java方法01什么是方法?
    java控制流程控制10增强For循环
    Java方法05可变参数
    java流程控制09打印九九乘法表
    Java流程控制12打印三角形及DUG
    Java方法02方法的定义和调用
    Java流程控制08For循环详解
    java流程控制11break、continue、goto
    java方法04命令行传递参数
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/4979704.html
Copyright © 2020-2023  润新知