0

解決策を探しましたが、何も機能しません。

<?php

$result = mysql_query("SELECT username, EmailAddress FROM users", $connection);

echo "<form method='post'><table class='mecz' cellpadding='0' cellspacing='0' border='0'>
<tr>
<th>user names:</th>
<th>address e-mail</th>
<th></th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr align='center'>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['EmailAddress'] . "</td>";
echo "<td><input class='delete' type='submit' name='delete' value='usuń' /></td>";
echo "</tr>";
}
echo "</table></form>";     

//フォームから削除アクションを渡そうとしている部分

?>
<?php

if (($_POST['username'] != "") && (isset($_POST['delete'])))  
{
$username = $_POST['username']; 
$query = "DELETE FROM users WHERE username = '".$username."' AND '".$_POST['delete']."'";
$result = mysql_query($query,$connection);
echo mysql_error();
}

?>

解決策はそれほど複雑ではないと思いますが、見つけることができません。助けてください。

ありがとう、クリス

4

1 に答える 1

3
  1. username投稿したコードを送信してい$_POST['username']ないため、設定されていないため、削除は実行されません。

  2. -block に入ったとしてもif、delete-query はあまり意味がありません - どうすればAND '".$_POST['delete']."'いいですか? その部分はかなり無意味に思えます。

  3. 複数の送信ボタン (ユーザーごとに 1 つ) を含む 1 つのフォームを作成しようとします。サーバー側では、フォーム全体が 1 つの大きなデータの束として送信されるため、どの送信ボタンが押されたかを判断できません。ユーザーごとに 1 つのフォームが必要になるか、単にリンク ( a-elements) を使用してdelete- と-value を送信します (usernameただし、後者の場合は-requestsGETの代わりに行うことに注意してくださいPOST) 。

  4. フォームに a を指定していませんaction- これは問題になる場合とそうでない場合があります。詳細については、これに関する質問へのさまざまなコメントを参照してください。

  5. あなたの削除クエリはsql-injectionsに対して完全に開かれています。準備済みステートメントの使用を検討するか、少なくともmysql_real_escape_stingこれを回避してください。

これは、コードがまったく機能しなくなったり、厄介なセキュリティ ホールが残ったりする本当の問題点にすぎません。さらに、不必要なものや厄介なものがいくつかあります(mysql_errorクエリが失敗した場合にのみ行うのではなく、毎回呼び出すなど - しかし、デバッグのために追加しただけかもしれません)。

全体として、php/mysql/html の基本的な理解を更新して拡張するために、良い本または詳細なチュートリアルをもう一度読み始める必要があるようです。

于 2012-05-06T08:13:36.637 に答える