2011-02-10 231 views
9

我正在尋找一種方法來使用PHP從服務器中刪除文件。基本上我有以這種方式上市的網頁上我的文件:刪除服務器文件

<ul> 
    <li><a href="delete_file.php?file=uploads/file_01.jpg">Delete File 01</a></li> 
    <li><a href="delete_file.php?file=uploads/file_02.jpg">Delete File 02</a></li> 
    <li><a href="delete_file.php?file=uploads/file_03.jpg">Delete File 03</a></li> 
</ul> 

的問題是我不知道如何讓我的delete_file.php文件的工作。我認爲它需要是這樣的:

<?php 
    $path="uploads/file_01.jpg"; 
    if(unlink($path)) echo "File Deleted"; 
?> 

...但我不知道如何獲得$路徑更改爲我點擊刪除文件。

+0

你想$ _GET任何文件[「文件」],這是瘋了,因爲我可以添加一個文件的URL和刪除它。 – 2011-02-10 00:41:09

+11

如果有人通過`delete_file.php?file = delete_file.php`會怎麼樣? – zerkms 2011-02-10 00:41:16

回答

16

雖然你必須非常小心,讓用戶能夠刪除文件,我會給你足夠的繩索掛自己

定義一個基本目錄將包含將要刪除的

$base_directory = '/home/myuser/'; 

然後刪除該文件

if(unlink($base_directory.$_GET['file'])) 
    echo "File Deleted."; 
2
<?php 
    $file_to_delete = $_GET['file']; 
    if (is_file($file_to_delete)){ 
    echo (unlink($file_to_delete) ? "File Deleted" : "Problem deleting file"; 

    } 
?> 

我不會撒謊,不知道更好的方式來消毒$ _GET [「文件」]以外的其他檢查,如果它是一個文件。如果這不是一個有效的方式,請專家請參考。(也許按照指導present in this SO topic?)

+0

爲了保護自己,您必須採取的消毒措施對於任何最終用戶都具有這種功能是很荒謬的。所以我會把它留給OP :-) – Patrick 2011-02-10 00:47:52