0

コードは次のとおりです。

    <?php

$post = htmlspecialchars($_GET["story"]);
$con = mysql_connect("localhost","xxx","xxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxx", $con);


$sql="
    UPDATE `tool` SET 
        `title` = '".mysql_real_escape_string($_POST['title'])."', 
        `details` = '".mysql_real_escape_string($_POST['details'])."'
    WHERE `id` = $post;";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

echo "<a href=story.php?id=";
echo $post;
echo ">Back to the story</a>";

mysql_close($con)


?>

最初に、これが何をしているのかを説明しましょう。これは、私のニュース システムの投稿を編集することになっています。最近まで、常に機能していました。何が変更されて機能しなくなったのかわかりません。私が知っていることはすべて試し、細部をすべて変更し、コードの一部を削除/追加しました。

何が起こっている:

初めて投稿を編集すると、タイトルと詳細が完全に消去されます。理由がわかりません。個々の投稿に対して 1 回だけ発生します。もう一度編集しても、同じままで、まったく問題ありません。

上記のコードに明らかな欠陥が見つからない場合は、ここで説明した状況が問題の原因を突き止めるのに役立つかもしれません。

私は正直にこれに最善を尽くしましたが、何が起こっているのかわかりません。どんな助けでも大歓迎です。

4

4 に答える 4

0

初めて投稿を編集すると、タイトルと詳細が完全に消去されます。

初回はタイトル詳細を投稿していない($_POST['title']$_POST['details']が空白になっている)のに対し、2回目は投稿していると思います。

これらが空白の場合は、送信元のフォームを確認する必要があります。Fiddlerなどのツールは、この状況に最適です。

また、SQL インジェクションとそれを防ぐ方法についても学ぶ必要があります。

于 2012-05-28T17:44:14.740 に答える
0

引用符の間に$postクエリを挿入します。

WHERE `id` = '$post'
于 2012-05-28T17:47:15.903 に答える
0

$_GET と $_POST を混在させています。

$post = htmlspecialchars($_GET["story"]); 

試す

$post = htmlspecialchars($_POST["story"]);

フォームがそれらすべてを投稿することを確認する

于 2012-05-28T17:47:29.363 に答える