5

テキストエリアが送信に使用されている私のサイトでは、次の行に沿って何かを表示できるコードがあります。

<textarea><p>text</p></textarea>

(XHTML 1.0 Transitional) を検証すると、このエラーが発生し、

line 88 column 50 - Error: document type does not allow element "p" here

これが有効な方法でない場合、何が期待されますか? onload JavaScript イベントを使用して回避策を実行できますが、それは必要ないようです。とにかく、これは出力には影響しませんが、サイトを検証したいと思います.

4

6 に答える 6

8

を入れようとしている理由はあり<p>ます<textarea>か?あなたがそれが有効ではないことがわかったので。表示目的 (つまり、コードの表示) の場合は、翻訳する必要があります。

<textarea>&lt;p&gt;text&lt;/p&gt;</textarea>

検証の問題を超えて、(上記のように適切にエンコードされていない) 任意のタグを表示できるようにすることは、セキュリティ上の大きな問題になる可能性があります。ユーザーが提供した入力が表示される前に適切にサニタイズされていることを確認することが最も重要です。

于 2008-10-12T21:16:34.803 に答える
3

CDATA セクションはオプションですか?

<textarea><![CDATA[
    <p>Blah</p>
]]></textarea>
于 2008-10-12T22:03:22.460 に答える
1

あなたが TinyMCE などの WYSIWYG エディタを作成しようとしていると考えるのは正しいですか? ほとんどの場合、 で HTML エンティティを使用し、textareaJavaScript を介して HTML に変換します。

于 2008-10-12T21:34:46.233 に答える
0

投稿されたデータでこの関数を使用できます

function clean_data($value) {
    if (get_magic_quotes_gpc()) { $value = stripslashes($value); }
    $value = addslashes(htmlentities(trim($value)));
    $value = str_replace("\'", "&#39;", $value);
    $value = str_replace("'", "&#39;", $value);
    $value = str_replace(":", "&#58;", $value);
    return $value;
}
于 2008-12-15T10:20:26.333 に答える
0

テキスト領域のタグを省略できます。改行が必要な場合は \n を使用します。それ以外の場合は、タグの代わりに&lt;p&gt;and&lt;/p&gt;を使用します。

于 2008-10-12T21:17:35.253 に答える
0

onload 関数を使用して、テキストエリア コンテンツの開始タグと終了タグを置き換えることができます。

eg: replace < > with &lt; &gt;

<textarea cols="" rows="">&lt;p&gt;text&lt;/p&gt;</textarea>

<p>テキスト</p>

于 2008-10-12T21:30:14.557 に答える