2017-03-06 70 views
0

我已經想出瞭如何爲每個帖子創建一個數組,以便t​​xt文件是唯一的,但是我一直試圖弄清楚如何刪除它。這是我迄今取得的進展:如何使用php刪除特定的txt文件

的index.php:

 <?php 

    $fileNames = glob("*.txt"); 
    $posts = array(); 

    foreach($fileNames as $fileName) { 
     $post = file($fileName); 
     array_push($posts, $post); 
    } 

    $postNum = 0; 
    foreach($posts as $post) { 

     $i = 1; 
     $fname = $fileNames[$postNum]; 
     foreach($post as $line) { 

     if ($i==1) { 
      echo "<h1 style=\"padding: 0px 30px 0px 30px;\">$line</h1>"; 
     } else { 
      echo "<p style=\"padding: 0px 30px 0px 30px; color:#4d4d4d;\">$line</p>"; 
      echo "<form action=\"deletepost.php\" method=\"get\" style=\"padding: 0px 30px 0px 30px;\"><input type=\"submit\" value=\"Delete Post\"><input type='hidden' name='filename' value='".$fname."'></form>"; 
     } 
     $i++; 
     } 



     $postNum++; 

    } 


    ?> 

Deletepost.php:

<?php 
session_start(); 
    if($_SESSION['authenticated'] != true) { 
     header("Location: login.php"); 
     die(); 
    } 

?> 

我知道我必須使用$ _REQUEST [ '名'];在deletepost.php中的某處,但是就我所知而言。任何幫助表示讚賞。謝謝。

+0

請參閱php unlink http://php.net/manual/en/function.unlink.php文檔。 –

回答

0

您正在尋找unlink功能。您可以添加這樣的邏輯:

Deletepost.php:

<?php 
    session_start(); 
    if($_SESSION['authenticated'] != true || !isset($_GET['filename'])) { 
     header("Location: login.php"); 
     die(); 
    } 

    $filename = $_GET['filename']; 

    if(file_exists($filename)) { 
     unlink($filename); 
    } 
?> 

但我強烈建議你檢查並重新檢查$文件名值,看看是否刪除該文件是不理智(例如:http://yoursite.com/deletepost.php?filename=../index.php會刪除你的index.php文件!)

+0

謝謝你的幫助! – Michelle

+0

您能否將標記答案解決? ;-) –

0

你可以使用unlink()在PHP中刪除文件,成功時返回true,不成功時返回false。

if (file_exists($_REQUEST['filename']) unlink($_REQUEST['filename']); 
相關問題