2011-02-10 232 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