2011-11-07 51 views
0

我有這個問題: 我有一個帶有textarea字段的表單,並且在onSumbit上,我將一個div的內容複製到這個textarea字段中。html textarea html標籤在IE發送表單後錯過

當我發送這種形式,我發送一個電子郵件與IE中的這些值我得到純文本沒有格式化。我已經測試過Chrome,Firefox,Opera,Safari和我的格式化表格。只有IE不工作。

我的形式開始:

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

上的onsubmit我設置這個文本區域值:

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

,並與PHP腳本ØGET值:

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

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

與Chrome,Firefox,Safari,Opera工作,我得到表格格式的電子郵件。只有IE瀏覽器給我這個問題。我使用開發工具在IE下進行了檢查,並且textarea value2的值填充了格式化表格(帶有html標籤)。

有什麼想法可能會出錯?

+0

這可能是一個標題問題,或者IE瀏覽器爲你做了一些轉義。 –

回答

1

如何設置textarea的值也可能會對此產生影響。

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

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

+0

謝謝。這已經解決了我的問題。謝謝 – gerpaick

1

我幾乎可以確定Internet Explorer會自動轉義HTML,因爲您將它作爲文本框的一部分提交。實際上,其他瀏覽器並沒有爲你做這件事 - 其標準與否是令人驚訝的,這是防止XSS攻擊的好方法。

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

那麼,我可以建議而不是依靠客戶端發送的HTML嗎?更好的解決方案是使用PHP生成表格並避免接受來自客戶端的HTML,而客戶端只需要注入。至少,確保在發送電子郵件之前清理html。

+0

謝謝你指出這一點。因爲我是初學者,我將不得不學習如何確保這個簡單的腳本。謝謝! – gerpaick