1. 程式人生 > >例項講解php檔案操作

例項講解php檔案操作

前言

本文主要講解php檔案的基本操作,包括檔案開啟、讀取、寫入、關閉、刪除。並通過這些知識實現一個簡易的商品訂購系統。

檔案建立/開啟

  • fopen:(建立並)開啟一個檔案或 URL 地址。(這意味著可以遠端開啟檔案,這就會涉及到一些安全問題)

檔案寫入

  • fwrite:向檔案寫入內容,可安全用於二進位制檔案 。
  • file_put_contents:向檔案寫入內容,等同依次呼叫 fopen,fwrite 以及 fclose 函式,所以該函式只需各處檔案路徑就行了,而不需要再額外執行fopen。

檔案讀取

  • fread:讀取檔案,可安全用於二進位制檔案。
  • fgets:從檔案中讀取 一行 資料,並將檔案指標指向下一行。
  • fgetc:從檔案中 逐字 讀取檔案資料,直到檔案結束。
  • file:把 整個檔案 讀入一個數組中,陣列中的每個單元都是檔案中相應的一行。

檢查檔案是否存在

檔案拷貝

  • copy:拷貝檔案。

檔案刪除

  • feof:測試檔案指標是否到了檔案結束的位置。
  • fseek:在檔案指標中定位。
  • rewind:倒回檔案指標的位置。
  • ftell:返回檔案指標讀/寫的位置

訂單系統

訂單提交頁面products.php
<?php 
//unit price(單價)
$price = array('orange'=>3,"apple"=>4
,"banna"=>3,"watermelon"=>2,"pear"=>4,"strawberry"=>5); //對輸入進行簡單的過濾 function filter($input){ if($input){ $input = trim($input); $input = htmlspecialchars($input); } return $input; } if($_SERVER['REQUEST_METHOD']=='POST'){ $file = fopen('order_form.txt','ab'
); if(!$file){ die("訂單提交失敗,請稍後重試!"); } $product = $_POST['products']; $num = filter($_POST['num']); $name = filter($_POST['name']); $address = filter($_POST['address']); $item = '訂購人:'.$name.','.'商品:'.$product.','.'數量:'.$num.','.'地址:'.$address."\r\n"; //寫人檔案 fwrite($file,$item); //關閉檔案 fclose($file); } ?>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #products{ width:200px; height:30px; outline:none; background-color: #bbb; } .num,.name,.address{ width:200px; height:30px; outline:none; background-color: #bbb; border:none; } .num:focus,.name:focus,.address:focus{ background-color: #fbb; } input[type="submit"]{ width:80px; height:30px; outline:none; background-color: #000; border:none; color:white; margin-top:10px; } input[type="submit"]:hover{ background-color: #f66; border-radius: 20px; width:100px; height:40px; } </style> </head> <body> <form action=<?php echo $_SERVER['PHP_SELF']; ?> method="post"> <table> <tr> <td> <span>請選擇商品: </span> </td> <td> <select name="products" id="products"> <option value="orange">橘子<?php echo '&nbsp'.$price['orange'].'元/斤';?></option> <option value="apple">蘋果<?php echo '&nbsp'.$price['apple'].'元/斤';?></option> <option value="banna" selected>香蕉<?php echo '&nbsp'.$price['banna'].'元/斤';?></option> <option value="watermelon">西瓜<?php echo '&nbsp'.$price['watermelon'].'元/斤';?></option> <option value="pear"><?php echo '&nbsp'.$price['pear'].'元/斤';?></option> <option value="strawberry">草莓<?php echo '&nbsp'.$price['strawberry'].'元/斤';?></option> </select> </td> </tr> <tr> <td><span>數量: </span></td> <td> <input type="text" name="num" value="1" class="num"> </td> </tr> <tr> <td>訂購人姓名:</td> <td><input type="text" name="name" class="name"></td> </tr> <tr> <td>配送地址:</td> <td><input type="text" name="address" class="address"></td> </tr> <tr><td><input type="submit" value="提交"></td></tr> </table> </form> </body> </html>

這裡寫圖片描述

訂單檢視頁面orders_view.php
<?php 
    $file = fopen('order_form.txt','rb');
    if(!$file){
        die("訂單載入失敗");
    }
    while(!feof($file)){
        $orders[] = fgets($file);//按行讀取檔案
    }
    array_pop($orders);
 ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
    <meta charset="UTF-8">
    <title>訂單檢視</title>
    <style>
        table{
            text-align:center;
            border:1px solid #666;
            background-color: #555;
            color:white;
            width:500px;
            position:absolute;
            left:400px;
        }
        tr,td{
            border:1px solid #666;
        }
        tr:hover{
            background-color: #f66;
        }
    </style>
 </head>
 <body>
    <table>
        <tr>
            <th>姓名</th>
            <th>商品</th>
            <th>數量</th>
            <th>地址</th>
        </tr>
        <tr>
            <?php 
            foreach($orders as $order){
                $item = explode(',',$order);
                echo '<tr>';
                foreach($item as $column){
                    echo '<td>';
                    echo explode(':',$column)[1];
                    echo '</td>';
                }
                echo '</tr>';
            }
             ?>
        </tr>
    </table>
 </body>
 </html>

這裡寫圖片描述