0

さて、私はゼロから開発されたブログに取り組んできましたが、市長の問題に遭遇しました。ユーザーがコメントを作成すると、フォームは名前とコメントを要求します。

`comname` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

`comment` VARCHAR( 1000 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL

それぞれですが、ユーザーが html タグを入力すると、php が MySQL からの情報を表示するときに html が表示されます。たとえば、ユーザーが次のように書いた場合:

<span style="#0F0">Hello world</span>

コメントとして、「Hello world」というテキストを緑色で表示します。

たとえば、 <> 文字をエンコードして同じ方法で表示するなど、これを回避する方法はありますか?

4

5 に答える 5

0

データベースに保存する前に使用できmysql_real_escape_stringますが、MySQL が減価償却された現在は pdo の使用を検討する必要があります。

于 2013-11-01T20:47:07.147 に答える
0

これはストレージの問題ではありません。これは出力の問題です。htmlentities()HTML出力をエスケープするために使用する必要があります。

于 2013-11-01T20:40:38.563 に答える
0

メソッドを使用するhtmlentities()htmlspecialchars()、HTML タグをテキストに変換できます。コンテンツをチェックせずにデータベースに送信すると、SQL インジェクションと呼ばれる脆弱性が発生し、データが破損したり失われたりする可能性があるため、そうする必要があります。そのため、文字をデータベースに格納する前に必ずエスケープしてください。

于 2013-11-01T20:48:33.577 に答える
0

出力をラップすると、適切なエンコーディングでorhtmlspecialchars()がエンコードされ、HTML が表示されます。<>

&lt;span style="color:#0F0"&gt;Hello world&lt;/span&gt;

出力に目的の表示を提供します。

ここにPHPの情報があります:http://id.php.net/manual/en/function.htmlspecialchars.php

実行される翻訳は次のとおりです。

  • '&' (アンパサンド)
  • '"' (二重引用符)
  • "'" (一重引用符)
  • '<' (未満)
  • '>' (より大きい)
于 2013-11-01T21:30:13.200 に答える