2 に答える
TEXT
またはTINYTEXT
、ユーザーからの ASCII データを保存する場合は、同様のもので問題ありません。多くのスペースが必要ない場合は、次のことを考えることができますVARCHAR
SQLクエリのセキュリティを損なう可能性のある文字(一重引用符、二重引用符など)をエスケープすると思いますがmysql_real_escape_string()
、それ以上のことはしません。
htmlentities()
< や > などの予約済みの html 文字を、html エンコードされた同等の < に変換します。と > それぞれ。これらの文字は SQL クエリにとって危険ではないため、ユーザーが入力した HTML タグをテキストとして表示し、HTML として解釈させたくない場合を除き、おそらくエスケープする必要はありません。
NL2BR()
もおそらく必要ありません。
最も重要なことは、これらの各機能をいつ使用するかの決定は、最終的なアプリケーションに依存することです。あなたはいくつかを必要とするかもしれません/望むかもしれませんが、他のものは必要としません (ただし、間違いなく使用する必要がありますmysql_real_escape_string()
) 。
本当にあなたが保存しようとしているものに依存します。ユーザー名、パスワードなどについては、varchar を使用できます。ただし、ニュース投稿や html データなどの長いテキストを保存する場合は、TEXT または LONG TEXT を使用できます (長さによって異なります)。
DB に挿入するときは、常に mysql_real_escape_string() を使用する必要があります。DB から HTML を出力している場合は、htmlentities または html_specialchars を実行して、ユーザーをハッカーの Web サイトなどにリダイレクトする可能性のある、ユーザーが挿入した JavaScript を出力しないようにすることができます。
もう 1 つのアイデアは、DB に挿入する前に htmlentities を使用してデータをエスケープできるというものですが、それはあなたの選択です。
NL2BR は、
代わりにすべての \r\n をタグに強制するのに最適です。
それで、あなたは正しい軌道に乗っているようです...