例項講解php檔案操作
阿新 • • 發佈:2019-01-10
前言
本文主要講解php檔案的基本操作,包括檔案開啟、讀取、寫入、關閉、刪除。並通過這些知識實現一個簡易的商品訂購系統。
檔案建立/開啟
- fopen:(建立並)開啟一個檔案或 URL 地址。(這意味著可以遠端開啟檔案,這就會涉及到一些安全問題)
檔案寫入
- fwrite:向檔案寫入內容,可安全用於二進位制檔案 。
- file_put_contents:向檔案寫入內容,等同依次呼叫 fopen,fwrite 以及 fclose 函式,所以該函式只需各處檔案路徑就行了,而不需要再額外執行fopen。
檔案讀取
- fread:讀取檔案,可安全用於二進位制檔案。
- fgets:從檔案中讀取 一行 資料,並將檔案指標指向下一行。
- fgetc:從檔案中 逐字 讀取檔案資料,直到檔案結束。
- file:把 整個檔案 讀入一個數組中,陣列中的每個單元都是檔案中相應的一行。
檢查檔案是否存在
檔案拷貝
- copy:拷貝檔案。
檔案刪除
訂單系統
訂單提交頁面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 ' '.$price['orange'].'元/斤';?></option>
<option value="apple">蘋果<?php echo ' '.$price['apple'].'元/斤';?></option>
<option value="banna" selected>香蕉<?php echo ' '.$price['banna'].'元/斤';?></option>
<option value="watermelon">西瓜<?php echo ' '.$price['watermelon'].'元/斤';?></option>
<option value="pear">梨<?php echo ' '.$price['pear'].'元/斤';?></option>
<option value="strawberry">草莓<?php echo ' '.$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>