2016-06-21 39 views
0

我需要刪除一個文件。到目前爲止,我最終刪除了所有文件。刪除PHP中的單個文件

如何刪除單個文件?

<?php 
function delete($descarga){ 
    $link = $descarga; 
    unlink($link); 
} 

$path="ficheros/"; 
$directorio=dir($path); 
while ($archivo = $directorio->read()) 
{ 
    if($archivo === '.' || $archivo === '..') {continue;} 
    $descarga = $path."".$archivo; 
    echo "<a href=".$descarga.">".$archivo."</a>"."<a title='Delete' href='#' onclick=".delete($descarga)."><span class='glyphicon glyphicon-remove'></span></a>"."<br>"; 
} 

$directorio->close(); 
?> 
+0

對於您發佈的代碼,您的問題並不清楚。請說清楚一點。 –

+0

我想用方法UNLINK @MuntashirAkon – JMF

+0

從圖標中刪除文件我認爲圖形與您的問題無關,所以我會從問題描述中編輯它。另外,據我所知,當你試圖刪除一個文件,所有的文件被刪除,而不是,是嗎? – cavpollo

回答

2

起初並不清楚,但我看到你提供的代碼有什麼問題。

首先你抓取目錄中的所有文件。 然後,您嘗試創建不是文件夾的文件的刪除鏈接。 但是,這是事情,每次你創建一個鏈接,你在代碼中調用delete()。因此,每次執行此代碼時,即使鏈接顯示在頁面上,也會立即刪除所有文件。試着加載頁面,不要點擊任何東西,你會看到。

所以這裏的問題是你混淆/混合服務器端代碼與客戶端代碼。頁面呈現後,您無法訪問您編寫的PHP代碼。所以這意味着你無法訪問onclick Javascript事件中的delete函數,因爲PHP是服務器端代碼,Javascript是客戶端代碼。

你需要的是2個PHP文件。其中顯示的文件和刪除按鈕,像這樣:

/display_files.php 
<?php 
    $path="ficheros/"; 
    $directorio=dir($path); 
    while ($archivo = $directorio->read()) 
    { 
     if($archivo === '.' || $archivo === '..') {continue;} 
     $descarga = $path."".$archivo; 
     echo "<a href=\"".$descarga."\">".$archivo."</a>"."<a title=\"Delete\" href=\"/path/to/delete/file.php?borrar_archivo=".$descarga."\"><span class=\"glyphicon glyphicon-remove\"></span></a><br>"; 
    } 

    $directorio->close(); 
?> 

和接收要刪除的文件作爲參數,像這樣(沒有測試過一個又一個,但應該接近你需要):

/path/to/delete/file.php 
<?php 
    $link = $_GET["borrar_archivo"]; 
    unlink($link); 
?> 

當然,這種做法是不,因爲你是讓任何人打電話網址中刪除任何他們喜歡的任何方式安全,但它提供你正在尋找的目的。

讓我知道是否有什麼不夠清楚。