5

データベースに保存したい HTML コードを含むテキスト領域が tinyMCE にプラグインされています。

そのhtmlコードをそのまま保存して、いつでも印刷できるようにしたい、さらにはファイルに書き留めたい(using fopen("filename","w"); )

使用するテーブルをセットアップしているので、データベース内のこの html テキストにどのタイプのレコードを割り当てればよいかわかりません。

するべきか..:

  • addslashes/stripslashesHTMLテキストを保存/スタンプするときに使用しますか?
  • またはhtmlencodechars/decodechars
  • またはまったくありませんか?
4

4 に答える 4

2

TEXTHTML を格納するためにデータ型を使用し、 addslashes.

于 2012-11-13T14:36:57.343 に答える
2

varchar(5000) などの大きな varchar を使用すると、TEXT 列ではできない全文索引付けを実行できることを意味します。

代わりに BBcode マークアップのようなものを使用する方がはるかに安全ですが、HTML を使用する必要がある場合 (ゲストが入力できないことを願っています) 、HTML を適切にサニタイズするhttp://htmlpurifier.org/のようなプラグインがあります。

明らかに、標準の PHP 関数を使用して HTML をエンコードおよびデコードできますが、何かを通過させるリスクが常にあります。

お役に立てれば。

于 2012-11-13T14:37:49.030 に答える
2

HTMLPurifierを使用して、悪意のある XSS コードを HTML から取り除きます。TinyMCE はこれを実行しようとしますが、スクリプトに直接投稿することで回避できます。

データを保存するときは、SQL インジェクションを防ぐために、エスケープする代わりにパラメーター化されたクエリ/準備済みステートメントを使用します。PDOまたはMySQLiでそれが可能です。これは、特にネイティブの mysql_* ライブラリから来ている場合は、優れた PDO チュートリアルです。

データ型に関しては、任意の文字列型で問題ありません。コンテンツの長さに依存します。

于 2012-11-13T14:38:31.487 に答える
1

データベースの列と、PDOのように、エンコーディングを引き継ぐデータベース抽象化レイヤーには、タイプ「テキスト」を使用します。

htmlencodechars()addslashes()両方とも適切ではありません。いくつかのエンコーディングを行うことは重要ではありませんが、特定の目的のために正しいタイプのエンコーディングを行うことは重要です。

于 2012-11-13T14:35:40.237 に答える