2012-03-27 47 views
1

我正在製作一個在獨立PC上運行的Intranet客戶管理器。商店將爲每個客戶記錄添加文件,當每個記錄被加載時,每個客戶文件夾的內容在A標籤內的屏幕上回顯出來,以便工作人員可以點擊它並查看已添加的文件那個客戶。使用php中的鏈接刪除文件

我想添加一個刪除鏈接到每個用戶記錄頁面,但我沒有太多的運氣。我正在使用以下內容,我不確定是否需要讓另一個php文件執行刪除操作,或者如果我可以將它放入這樣的鏈接中?

echo '<a href="unlink(./customer-files/'.$customerID.'/'.$filename->getFilename().');">Delete File</a>'; 

當點擊該鏈接我得到的是>>

The requested URL /customermgr/unlink(./customer-files/5/customeraddnewfile.jpg); was  not found on this server. 

編輯>>>>

這將會在本地安裝,沒有連接到互聯網,因此安全性這不是一個問題,因爲任何人都有可能因爲沒有連接到互聯網而闖入這個網站。我只是尋找最快最簡單的方法,而無需編寫太多額外的代碼:)。

+0

這絕對肯定不行。點擊錨鏈接''不會在服務器上執行任意代碼。 – sberry 2012-03-27 13:39:22

+0

http://stackoverflow.com/questions/2786046/delete-file-using-a-link或http://www.tutorialarena.com/php/php-delete-file-unlink.php – Anand 2012-03-27 13:37:57

回答

0

您不能像這樣通過HTML運行這樣的命令。你需要創建一個新的PHP文件並鏈接到:

<a href='delete-file.php?file=fileid'> 

然後php頁面將運行unlink命令。

但是請注意,這裏存在嚴重的安全問題,因爲人們可以輸入他們選擇的任何文件名(不管您在HTML中設置了什麼)。另外請注意,他們可以通過在文件路徑中使用./來刪除目錄,並刪除文件級別更高的文件

+0

嗨,它的運行一個獨立的電腦,所以沒有辦法任何人都可以進入 – 2012-03-27 13:43:02

+0

在這種情況下,你應該沒問題,只需將刪除頁面設置爲'unlink('path_to_dir /'.__ GET ['fileid'])'它應該可以工作 - 只要你高興,沒有人會濫用它 – 2012-03-27 13:45:32

2

您是...試圖讓鏈接在服務器上運行任意PHP代碼?如果它有效,你有沒有想過會有多不安?

相反,只是有你的鏈接是:

echo '<a href="unlink.php?id='.$customerID.'&file='.$filename->getFilename().'">Delete</a>'; 

然後你unlink.php文件可以是這樣的:

$f = "customer-files/".$_GET['id']."/".$_GET['file']; 
if(file_exists($f)) unlink($f); 

但是要注意安全隱患。例如,確保文件名中沒有../的實例。

0

如果這將工作(它不),這意味着任何人都可以通過改變自己的href基本上刪除任何文件。

我不會踩住你如何壞你的想法是,但肯定的 - 你需要另一個PHP文件,抓住查詢字符串,然後運行目標unlink()

+0

嗨,它的零安全風險,因爲它在一家商店的獨立電腦上運行,沒有連接到互聯網,所以任何人都無法破解它。我只是試圖通過本地安裝來削弱它,希望我不必再寫一個額外的刪除腳本:) – 2012-03-27 13:48:44

1

你不能這樣做。 您需要在分開的文件中進行取消鏈接調用。 在鏈接中,您提供了一個要刪除的文件的ID或其他文件,然後在另一個文件中,您將獲得此ID並刪除相應的文件(在檢查操作允許後)。

例:

在你的鏈接文件

<a href="unlink.php?name=customernewfile.jpg">Delete me !</a> 

而在你的 「unlink.php」 文件:

... 
unlink('my/path/to/files/'.$_GET['name']); 

它的unsercure爲例,不使用它喜歡這個。