0

私のデータベースにはいくつかのテーブルがあり、画像パス用に 1 つ、画像幅用に 1 つあり、NULL の標準値と null 値 (チェックボックスとドロップダウン ボックスは両方とも NULL) を持っています。新しいパスまたは幅は変更されませんが、他のパスは変更されます。これは私のコードです。

require_once("../Packages/Connection.php");

$text = mysql_real_escape_string($_POST["articleText"]);
$method = $_POST['method'];
$articleId = $_POST['articleId'];
$imagePath = $_POST['imagePath'];
$imageWidth = $_POST['imageWidth'];

if($method == "update")
{
    mysql_query("UPDATE Articles SET text='$text' WHERE id='$articleId'") or die(mysql_error());
}
elseif($method == "delete")
{
    mysql_query("DELETE FROM Articles WHERE id=".$articleId."");
};

if($_POST["articleGroup"]=="News")
{
    mysql_query("INSERT INTO Articles VALUES(NULL,'".$_POST["articleGroup"]."','".time()."','".$text."', NULL, NULL, NULL)") or die(mysql_error());
}
else
{
    mysql_query("INSERT INTO Articles VALUES (NULL,'".$_POST["articleGroup"]."','NULL','".$text."','NULL','".$imagePath."','".$imageWidth."')") or die(mysql_error());  
}

前もって感謝します

4

2 に答える 2

1

他の 2 つのフィールドには UPDATE はありません。

UPDATE Articles SET text='$text' WHERE id='$articleId'

他のフィールドの更新 (SET 句への追加) を含める必要があります。

他の人が言ったように、他のフィールドもサニタイズする必要があります(おそらく非推奨の拡張機能から移動します-必要に応じてPHPを更新します)。そうしないと、攻撃者が他のフィールドを使用できるため、行っているサニタイズは無意味です

于 2012-10-16T22:17:19.553 に答える
0

他の 2 つの属性を更新コマンドに追加する必要があります。mysql テーブル スキーマを知っておくと役に立ちますが、列名を推測すると、次のようになります。

mysql_query("UPDATE Articles SET text='".$text."', width='".$imageWidth."', path='".$imageWidth."' WHERE id='".$articleId."'");

また、コメンターが指摘したように、入力値をサニタイズする必要がありますREQUEST 変数はすべて、チェック/サニタイズする必要があります。詳細については、こちらをご覧ください。

于 2012-10-16T22:20:03.403 に答える