2011-07-07 28 views
1

現在ログインしているユーザーのテーブルから値を削除するには、最も安全な方法を探しています。テーブルから行を削除するmysql

私は、ユーザーのすべての利益をつかむ私のページでクエリを持っていると私はそのように(私は前にやったことがない)削除機能を追加するなど

<?php 
print $interest1 . "<a href='del-interest.php'>Delete</a><br />"; 
print $interest2 . "<a href='del-interest.php'>Delete</a><br />"; 
print $interest3 . "<a href='del-interest.php'>Delete</a><br />"; 
?> 

としてそれらを表示するときユーザーが削除をクリックすると、対応する行がテーブルから削除されます。私の唯一の懸念は、POST/GETメソッドを使用してデータを渡すと、一部のユーザーが悪意を持ってデータを変更して、すべての種類のものを削除する可能性があります。何を求めているのですか?これを行うには最高の、最も安全な方法は何ですか?申し訳ありません


このdoesntのはセンスイムは、PHPを学ぶために全力をしようとします、しかし、次の仕事は、でしょうか?私が持っていた削除-interst.php上

<?php 
print $interest1 . "<form method='post' action='delete-interest.php'><input type='hidden' value='".$interest1."' name='int1' id='int1'/></form><br />"; 
print $interest2 . "<form method='post' action='delete-interest.php'><input type='hidden' value='".$interest2."' name='int2' id='int2'/></form><br />"; 
print $interest3 . "<form method='post' action='delete-interest.php'><input type='hidden' value='".$interest3."' name='int3' id='int3'/></form><br />"; 
?> 

、その後...

if(isset($_POST['int1'])) { 
    $interest = $_POST['int1']; 
    mysql_query = DELETE $interest FROM user_interests WHERE user_id = users sesson id; 
} 
elseif(isset($_POST['int2'])) { 
    $interest = $_POST['int2']; 
    mysql_query = DELETE $interest FROM user_interests WHERE user_id = users sesson id; 
} 
elseif(isset($_POST['int3'])) { 
    $interest = $_POST['int3']; 
    mysql_query = DELETE $interest FROM user_interests WHERE user_id = users sesson id; 
} 

答えて

0

最初は<a>タグを使用しないでください。これは非常に悪いフォームであるGETリクエストを送信するためです。 w3.org

から

スニペット...大会は、GETとHEADメソッドは、検索以外の行動を取るの重要性を持つべきではないことが確立されてきました。

したがって、あなたはRESTful規則を次れた場合は、通常、あなたがDELETEを使用するPOST方法を使用してフォームを使用する必要があります(ただし、ほとんどのブラウザがこの機能をサポートしていませんので、あなたはこれをシミュレートする必要があります)。

@OMG ponyが述べたように、一意の識別子(主キー)の情報が必要なので、削除する行を知る必要があります。

@henasrafは、リクエストを送信したユーザーが実際にログインしており、自分のデータを削除する権限を持っていることを検証する必要があります。あなたは興味がユーザーにリンクされていると述べているので、ユーザーがログインしていてデータの削除のみを試みていることを確認するだけです。

0

あなたは、クリックの種類を取得し、機能を行くためにはJavaScriptとAjaxを使用する必要があります。

jQueryを使って例えば:

$('.del-link').click(function(){ 
    var id = $(this).data('rowid'); 
    $.post('del-interest.php', {id: id}, function(data){ 
      //do something on return 
    }); 
    return false; 
}); 

し、HTMLは次のようなものに見える必要があるでしょう:PHP側での検証のいくつかの並べ替えを持っていることを忘れないでください

interest1 <a class="del-link" href="#" data-rowid="interest1ID">DELETE</a> 
interest2 <a class="del-link" href="#" data-rowid="interest2ID">DELETE</a> 
... 

をし、いくつかdataを返すので、javascriptはユーザーにエラーを出力できます。

+1

いいですが、それは問題ではありません - 彼は必要なものを削除し、悪意のある使用を防ぐ方法を尋ねています – casraf

+0

@henasraf、何を意味するのですか? – Neal

+0

質問を読む - 彼は不要なものを削除するために人々がGET/POSTデータを変更するのを防ぐ方法を尋ねています – casraf

0

削除する前に、削除を検証することをお勧めします。削除自体で、ユーザーが自分が行っていることを行う権限を持っているかどうかを確認します。それが途絶えたら、DELETE FROM SQLクエリを使用してジョブを実行します。

関連する問題