0

したがって、データベースに投稿する次のPHPコマンドがあります。

$sql = "INSERT INTO `db`.`tab;e` (`id`, `type`, `subtype`, `image1`, `image2`, `image3`, `title`, `body`, `price`, `googlecode`, `date`) VALUES (NULL, '$type', '$subType', '$image1', '$image2', '$image3', '$title', `$body`, '$price', '$googleCode', '$date');";

データは投稿で取得されています。たとえば、タイプは

$type = $_POST[type];

等..

ただし、投稿するときに、コードが機能する場合と機能しない場合があります。

私はniceEditを使用して本文を取得し、投稿するときに、「」と「」が私の投稿に干渉するのではないかと心配しているためだと思います。

また、$googlecodeは引用符などが付いたdivの束です。

これが私のコードが何度も機能する理由でしょうか?

4

2 に答える 2

3

値をエスケープせずにクエリに直接追加するため、失敗することがあると思います。このように、一部の値はSQLステートメントを壊す可能性があり、ステートメントはSQLインジェクションに対して脆弱です。

これを修正するには、値をエスケープする必要があります。さらに良いのは、プリペアドステートメントを使用することです。意味のある完全なエラーメッセージ(thx Pekka)を簡単に取得できるように、エラー処理を追加することも強くお勧めします。

于 2012-06-08T06:58:10.193 に答える
0
foreach($_POST as $key => $value) {
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    $_POST[$key] = mysql_real_escape_string($value);
}


$type = $_POST[type];
//etc...

$sql = "INSERT INTO `db`.`table` (`id`, `type`, `subtype`, `image1`, `image2`, `image3`, `title`, `body`, `price`, `googlecode`, `date`) VALUES (NULL, '$type', '$subType', '$image1', '$image2', '$image3', '$title', '$body', '$price', '$googleCode', '$date');";
于 2012-06-08T07:09:04.077 に答える