2012-04-04 96 views
-2

我有以下代碼從數據庫中刪除記錄。不過,我希望它也可以從服務器上刪除關聯的文件。其中一列包含文件的路徑。有人可以解釋我將如何在這裏使用取消鏈接功能嗎?刪除文件和記錄

<?php 

include('config.php'); 

if (isset($_GET['id']) && is_numeric($_GET['id'])) 
{  
    $id = $_GET['id'];  
    $result = mysql_query("DELETE FROM images WHERE id=$id")  
    or die(mysql_error());  
    header("Location: view.php"); 
} 
else  
{ 
    header("Location: view.php"); 
} 

?> 
+2

在刪除之前從表格中選擇需要的信息。 – 2012-04-04 22:02:44

回答

2

別的之前,解決您的SQL injection孔。

要回答您的問題,首先您必須選擇記錄以瞭解有關該本地文件的詳細信息。一旦你完成數據庫記錄的核對,你就失去了存儲文件位置的唯一地方,所以首先獲取數據。

這使它在僞代碼:

  1. 獲取文件位置
  2. 刪除文件
  3. 刪除數據庫記錄
+1

'is_numeric()'不處理所有情況? – PeeHaa 2012-04-04 22:03:39

+0

它會阻止查詢首先運行,但如果if()被更改,則代碼的其餘部分是等待發生的注入攻擊。 – 2012-04-04 22:04:41

1

你可以做一個查詢第一檢索imagename之後,簡單地刪除文件:

unlink($theFilenameRetrievedFromDb); 
1

你必須首先做一個select語句到數據庫知道你的文件的路徑。完成此操作後,可以在此路徑上使用取消鏈接,然後製作刪除語句。