2011-11-07 19 views
0

私はこの問題を持っている: 私は、テキストエリアのフィールドを持つフォームを持っている、とonSumbitに、私はこのテキストエリアのフィールドにテーブルとdiv要素の内容をコピーします。HTMLのtextarea htmlタグは

私はこのフォームを送信すると、私は、プレーンテキストがフォーマットされていない取得IEでこれらの値を使用してメールを送信します。私は、Chrome、Firefox、Opera、Safariでテストして、フォーマット済みのテーブルを取得します。 IEのみが動作していません。

私のフォームで始まる:

をonSubmit上
<form name="form" action="sendmail.php" method="post" onsubmit="formVal()" > 

私はこれでテキストエリアの値を設定します。その後、

$message = "  
<p><b>Summary: </b><br />" . $_POST['value2'] . " .</p>"; 

:で取得値O

$("#value2").html($("#spReport").html()); 

とPHPスクリプトで私はこれを電子メールで送る。クロムは、Firefox、Safariのと

、Operaが取り組んでいる、私はフォーマットされた表と電子メールを取得します。 IEのみが私にこの問題を与えます。私はIEの下でDeveloper Toolsをチェックしており、textarea value2の値はフォーマットされたテーブル(htmlタグ付き)で満たされています。

何が間違っている可能性がありますか?あなたがテキストエリアの値を設定しているどのように

+0

これはヘッダーの問題である可能性があります。またはIEがエスケープしている可能性があります。ありがとう。 –

答えて

1

も、これに影響を与える可能性があります。具体的には、タグのみに適用されなければならない(でもの.text()と))の.htmlを(使用

$("#value2").val($("#spReport").html()); 

:あなたがして値を設定する必要があります。 .val()は、主にフォームフィールド変数の設定に使用されます。もちろん、それらは互換性がありますが、どのような副作用が発生するかはわかりません。

+0

ありがとうございます。これは私の問題を解決しました。ありがとうございました – gerpaick

1

私はあなたがテキストボックスの一部としてそれを提出しているため、Internet Explorerは自動的にHTMLをエスケープしていることをほぼ確信しています。私は実際には他のブラウザも同様にあなたのためにこれをやっていないことに驚いています - 標準かどうか、それはXSS攻撃を防ぐための素晴らしい方法です。あなたは電子メールを送信する前に、PHPで、フィールド上のhtmlspecialchars_decode()を呼び出すことであろうため、問題を「解決」する必要があり何

。 (これは自動的にエスケープしないブラウザでは何もしません。IEが行うエスケープ処理を修正する必要があります)。クライアントから送信されたHTMLに依存しているとは思われますか?はるかに良い解決策は、PHPで表を生成し、クライアントからのHTMLを受け入れないようにすることです。これは単に注入を要求しています。少なくとも、電子メールを送信する前に、あなたのhtmlを浄化していることを確認してください。

+0

これを指摘してくれてありがとう。私は非常に初心者なので、この簡単なスクリプトを少し安全にする方法を学ぶ必要があります。ありがとう! – gerpaick