[英]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.