簡體   English   中英

刪除服務器文件

[英]Deleting a server file

我正在尋找一種使用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"; 
?>

...但我不知道如何讓$ path更改為我點擊刪除的文件。

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

定義將包含將被刪除的任何文件的基目錄

$base_directory = '/home/myuser/';

然后刪除該文件

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

  }
?>

我不會撒謊,除了檢查它是否是文件之外,不知道更好的方法來消毒$ _GET ['file']。 如果這不是一種有效的方式,專家請加入。(也許請遵循本SO主題中的指導原則?)

有時您可能想要動態創建路徑。

例如,我在不同的地方使用CMS,因此我不應該使用固定的定義。

我的項目結構:

-我的項目
| -admin
| --app
| ---控制器
| -upload

$base_directory = dirname(__FILE__);
echo $base_directory; //'/home/myProject/public_html/admin/app/controlers/'

這是正在運行的php文件的路徑。

我在'admin/app/controllers/' php文件

但是在'upload/'上傳文件

我們需要為正確的路徑刪除不必要的目錄。 上傳文件夾中的文件,所以我們不需要'admin / app / controllers /'是​​不必要的。 所以我們正在刪除這一部分。

$path = str_replace('admin/app/controllers/', '', $path);
echo $path;  //'/home/myProject/public_html/upload/myFile'

現在我們有正確的路徑,我們可以刪除該文件。

if (file_exists($path)){
    if(unlink($path)){
       echo "File deleted";
    }
}else{
     echo "File is not exists";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM