0

データベースにデータを挿入する前に、mysql_real_escape_stringを使用してSQLインジェクションから保護しようとしています。

$data=mysql_real_escape_string($_POST['data']);

現在、データは次のように保存されます。

That\\\'s an apostrophe.\r\n\r\nThis new line isn\\\'t displaying properly!

したがって、mysqlからプルバックした後、テキストエリア内に正しく表示されるようにしようとしています。

$data = nl2br($data);

何らかの理由で、これは何もしません。sを。str_replaceに置き換えようとしましたが、テキストエリア内に表示されます。\r\n'<br><br>

mysqlにあるものを次のように表示するにはどうすればよいですか?

That's an apostrophe.

This new line isn't displaying properly!
4

3 に答える 3

1

実際に使用しても、攻撃mysql_real_escape_stringから完全に保護されるわけではありません。SQL Injection

最善の方法は、PDOまたはを使用することMySQLiです。

于 2012-11-30T13:02:55.213 に答える
0

おそらくmagic_quotesがオンになっているでしょう
。echo get_magic_quotes_gpc()でチェックしてください。

"GPC (Get/Post/Cookie) 操作の magic_quotes 状態を設定します。magic_quotes がオンの場合、すべての ' (一重引用符)、" (二重引用符)、\ (バックスラッシュ)、および NUL は自動的にバックスラッシュでエスケープされます。"

ところで、magic_quotes を使用するのは得策ではありません。このクラスのいずれかを使用してみてください。

PDO http://br2.php.net/manual/en/book.pdo.php または mysqli http://br2.php.net/manual/en/book.mysqli.php

于 2012-11-30T13:13:45.517 に答える