2012-04-04 6 views
-2

データベースからレコードを削除する次のコードがあります。しかし、私はそれもサーバーから関連付けられているファイルを削除したいと思います。列の1つにファイルへのパスが含まれています。誰かがここでリンク解除機能をどのように使うのか説明できますか?ファイルとレコードを削除する

<?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

削除する前に必要な情報をテーブルから選択してください。 –

答えて

2

何かする前に、あなたのSQL injection穴を修正します。

質問に答えるには、まずそのローカルファイルに関する詳細を記録する必要があります。いったんデータベースレコードを見つけたら、ファイルの場所が格納されている場所を失ってしまったので、まずそのデータを取得してください。擬似コードでは、それを作るだ

  1. あなたが最初にデータベースにSELECT文を作成する必要があり、削除ファイル
  2. 削除データベースレコード
+1

'is_numeric()'はすべてのケースを処理しませんか? – PeeHaa

+0

これは最初の場所でクエリが実行されることを防ぎますが、if()が変更された場合でも残りのコードは発生するのを待っている注入攻撃です。 –

1

あなただけimagenameのを取得するために、最初のクエリを行うことができ、それは単にファイルを削除した後:

unlink($theFilenameRetrievedFromDb); 
1

をファイルの場所を取得あなたのファイルのパスを知る。これが完了したら、このパスでunlinkを使用してdelete文を作成できます。

関連する問題