2011-07-11 6 views
0

MySQLにデータを保存するのに最適なルートは何ですか? MySQLでは、フィールド型としてTEXTを使用するだけですか?<textarea>データを保存する方法とエスケープして返すデータ

mysql_real_escape_string()に戻り値\ r \ nを使用する場合も同様です。 しかし、それ以降はhtmlentities()を実行する必要がありますか?

そして、私はNL2BR()を使用するべきです、画面にデータを返すとき?

ここでは、この情報を保存するための最適なルートを見つけようとしています。

ありがとうございました!

答えて

0

TEXTまたはTINYTEXTか何か同様に、ユーザからのASCIIデータを格納するため問題ないはずです。あなたは多くのスペースを必要としない場合は、およそVARCHAR

私はmysql_real_escape_string()は、SQLクエリ(単一引用符、二重引用符など)のセキュリティを損なう可能性がある文字をエスケープするが、あまり行っていないことを考えると思うかもしれませんそれ以上。

は、<などの予約済みのhtml文字を、htmlでエンコードされた同等の& ltに変換します。および& gt;それぞれ、これらの文字はSQLクエリにとって危険ではないので、ユーザーがテキストとして入力したHTMLタグをHTMLとして表示する必要がなければ、エスケープする必要はないでしょう。

NL2BR()もおそらく必要ありません。

これらの各機能をいつ使用するかは、最終用途によって決まることが最も重要です。あなたは必要とするかもしれませんが、他の人は必要ではないかもしれません(しかし、間違いなくmysql_real_escape_string()を使うべきです)。

0

本当に保存しようとしているものによって異なります。ユーザー名、パスワードなどの場合は、varcharを使用できます。しかし、ニュース記事やHTMLデータなどの長いテキストを保存している場合は、TEXTまたはLONG​​ TEXTを使用することができます(期間によって異なります)。

DBに挿入するときは、必ずmysql_real_escape_string()を使用してください。 DBからHTMLを出力している場合は、htmlentitiesやhtml_specialcharsを実行して、ユーザーをハッカーのWebサイトなどにリダイレクトする可能性のあるジャバスクリプトを出力しないようにすることができます。

もう1つの考え方は、DBに挿入する前にhtmlentitiesを使用してデータをエスケープすることができますが、それはあなたの選択です。

NL2BRはすべての\ r \ nを
タグに強制するのに最適です。

だから、それはあなたの正しい軌道上のように思える...

関連する問題