-2

以下のコードを使用して、SQL インジェクションを開かずに " ' \ / : ; などの特殊文字を許可するにはどうすればよいですか。

$opendb = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

$text = $_POST['text'];

mysql_query("UPDATE table SET text='" . $text . "' WHERE 
id='" . $_GET['id'] . "'");

mysql_close($opendb);

$textHTML テキストエリアからの文が含まれています。引用にテキストを入力しようとすると、引用の前にテキストが挿入されます。

4

2 に答える 2

-2

おそらく、最も簡単な解決策は、次のように mysql_real_escape_string() 関数を使用することです。

$opendb = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

$text = $_POST['text'];

mysql_query("UPDATE table SET text='" . mysql_real_escape_string($text) . "' WHERE 
id='" . $_GET['id'] . "'");

mysql_close($opendb);

編集: このコードを使用すると、$text 変数の特殊文字をデータベースに保存できるようになります。

$_GET['id'] もエスケープする必要があります。

于 2013-09-12T12:07:21.623 に答える