呼呼~
接下來是製作刪除檔案的處理,其實這方面只是把之前讀取留言的功能改良而已。
除了改成只「讀主題」和「加入刪除函式」之外,就沒有其他的處理。
首先,在目錄下建立一個 remove.php 的檔案,並且撰寫程式碼(如下)
<?php
function removeComment(array $paths){ //建立移除函式
foreach($paths as $path){ //將路徑陣列一個一個讀取
if(!is_file($path)) continue; //如果不是檔案則切到下一個繼續
unlink($path); //刪除檔案
++$i;
}
return $i;
}
function getSubject($file){ //建立 getSubject 函式
$data = file_get_contents($file); //讀取檔案內容
$data = explode(PHP_EOL, $data); //以斷行分割檔案內容( PHP_EOL 會依照作業系統切換 \n 或 \r\n )
foreach($data as $key => $line){ //將內容陣列放入 foreach 運作
if($line == ';subject'){ //檢查是否為註解
$logSubject = (bool) true; //啟動紀錄主旨
continue; //直接結束本次迴圈
}
if(!$logSubject) continue; //如果非主旨則跳過,並且繼續尋找
$subject = $line; //紀錄主旨
break; //離開迴圈
}
return $subject; //傳回取得之主旨
}
if($_POST['submit']){ //檢查是否有送出表單
$dels = removeComment($_POST['del']); //傳入移除陣列
echo "
成功移除{$dels}筆留言
";//產生表單(送出)
}
$glob = glob('./data/*.txt'); //搜尋資料檔案
sort($glob, SORT_NUMERIC); //排序檔案( 由大到小 )
$_GET['page'] = !$_GET['page'] ? 1 : $_GET['page']; //檢查是否有指定頁碼
$start = ($_GET['page'] - 1) * 15; //設定迴圈開始編號
$end = $_GET['page'] * 15; //設定回圈結束編號
echo '
';//產生表單
?>
上方的 HTML 部份可能會有問題,請各位在使用時稍微注意。
原理大致解說:
顯示部份和 comment.php 無異,只是將讀取部份改為「只讀取標題」
並且為了防止意外,只在「確認為標題時」才會做儲存。
而另外就是加入了「刪除函式」
構造很簡單,將傳入的陣列依序使用 unlink 刪除檔案函式刪除。
而 name="del[]" 為表單的陣列用法,在 PHP 收到為 $_POST['del'] 的陣列(method="post" 狀況)
每個 checkbox 儲存的 value 都是該筆留言路徑,因此刪除時只需將取得的路徑陣列傳入。
—
到了這部份,其實已經準備好製作留言板的技術。
明天,即將開始的就是「正式製作」
不過到了這個部份,其實整個架構是很混亂的。
因此明天要先做「重新規劃、整理」的處理,以免成品過度混亂。
如果有圖片可以一起顯示 就比較好 我目前有卡到(汗..
拍圖片有點趕呢……
不過目前都是撰寫完畢>存檔>打開後即可使用
還沒有變化喔@@