簡體   English   中英

html textarea html標簽僅在IE中發送表單后丟失

[英]html textarea html tags missed after send form in IE only

我有這個問題:我有一個帶有textarea字段的表單,並且在onSumbit上,我將帶有表格的div的內容復制到此textarea字段。

當我發送此表單並在IE中發送包含這些值的電子郵件時,我會得到未格式化的純文本。 我已經測試過Chrome,Firefox,Opera,Safari和我的格式化表格。 只有IE不工作。

我的表格開頭是:

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

on onSubmit我用這個設置文本區域值:

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

並在PHP腳本中獲取值:

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

然后我通過電子郵件發送。

隨着Chrome,Firefox,Safari,Opera的運作,我收到了表格式的電子郵件。 只有IE給了我這個問題。 我已使用開發人員工具在IE下進行了檢查,並且textarea value2的值填充了格式化的表(帶有html標記)。

什么想法可能是錯的?

你如何設置textarea的值也可能會對此產生影響。 您應該通過以下方式設置值:

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

使用.html()(甚至.text())應該只應用於標記,特別是。 .val()主要用於設置表單字段變量。 當然,它們是可以互換的,但你不知道可能會出現什么副作用。

我幾乎可以肯定Internet Explorer會自動轉義html,因為你將它作為文本框的一部分提交。 我真的很驚訝其他瀏覽器也沒有這樣做 - 標准與否,這是防止XSS攻擊的好方法。

什么應該“解決”你的問題是在發送電子郵件之前在php的字段上調用htmlspecialchars_decode() (對於沒有自動轉義的瀏覽器,這不會做任何事情,並且應該修復IE所做的轉義。)

也就是說,我可以建議不要依賴客戶端發送的HTML嗎? 一個更好的解決方案是在PHP中生成表並避免從客戶端接受HTML,這只是要求注入。 至少,確保在通過電子郵件發送之前清理你的html。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM