2013-07-11 35 views
0

我有一個網站,允許用戶上傳照片到我的文件夾。當頁面刷新時,它將顯示該文件夾內的所有圖像。刪除文件夾中的特定圖像

我用scandir代替glob函數來讀取圖像。我檢查文件類型擴展名以查看它是否處於允許的格式(jpg,jpeg,gif,png)然後我使用循環來顯示它們。每張圖片旁邊都有一個「刪除」鏈接。

當用戶按下「刪除」鏈接時,我想刪除文件夾中的特定圖像。我知道函數unlink()能夠刪除圖像,但我不能這樣做,因爲我不知道如何將該特定圖像名稱傳遞給delete.php。有人告訴我使用AJAX,我還沒有學習。如果有必要,我會立即去學習。所以請告訴我是否有任何方法可以解決這個問題,而不是AJAX。非常感謝!

$dir = 'images/'; 

$file_type_allowed = array('jpg','jpeg','png','gif'); 

$dir_contents = scandir($dir); 

foreach($dir_contents as $file){ 

    $file_type = explode('.',$file); 
    $file_type = strtolower(end($file_type)); 

    if($file !== '.' && $file !== '..' && in_array($file_type, $file_type_allowed) == true){ 

     echo '<img src="', $dir, '/', $file, '" alt="', $file, '" />'; 
     echo '<a href="delete.php">Delete</a>';  
} 
+0

如果你想通過點擊刪除按鈕來刪除圖片而不刷新頁面,那麼你必須使用AJAX(幾乎所有的站點現在都使用AJAX )。但是,如果您想在刪除後刷新頁面,則可以使用HTML表單進行此操作。提到你的要求。 – Debashis

+0

我明白了。如果AJAX真的很流行,我會去學習它。但在此期間,我會嘗試在URL中傳遞參數,並使用$ _GET將其置於delete.php中。謝謝大家 –

回答

1

您可以在URL中傳遞參數,並通過$ _GET superglobal訪問它。這將重新加載頁面。 Ajax將允許用戶單擊「刪除」鏈接並且不會重新加載頁面。

無論如何,如果你讓你的刪除鏈接像

echo '<a href="delete.php?file=' . urlencode($dir . '/' . $file) . '">Delete</a>';

然後在delete.php訪問該文件需要被刪除,因爲

$file = urldecode($_GET['file']); 
// verify the file exists, and that the user should have access 
unlink($file); 

你必須要非常小心但是,請確保在刪除之前檢查文件位置。否則,惡意用戶可能會輸入「delete.php?file = delete.php」,並破壞您的網站。所以你需要檢查他們從哪個目錄刪除,並且文件類型是一個圖像。

相關問題