html textarea html тэги пропущены после отправки формы только в IE - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть эта проблема: у меня есть форма с полем textarea, и в onSumbit я копирую содержимое div с таблицей в это поле textarea.

когда я отправляю эту форму и отправляю электронное письмос этими значениями в IE я получаю простой текст не отформатирован.Я проверил с Chrome, Firefox, Opera, Safari, и я получаю отформатированную таблицу.Только IE не работает.

моя форма начинается с:

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

при onSubmit я устанавливаю значение текстовой области следующим образом:

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

и в сценарии php oполучить значение с помощью:

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

, затем я отправлю это по электронной почте.

с Chrome, Firefox, Safari, Opera работает, я получаю письмо с форматированием таблицы.Только IE дает мне эту проблему.Я проверил в IE с Developer Tools, и значение textarea value2 заполнено отформатированной таблицей (с HTML-тегами).

есть идеи, что может быть не так?

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Я почти уверен, что Internet Explorer автоматически экранирует HTML, потому что вы отправляете его как часть текстового поля. Я на самом деле удивлен, что другие браузеры не делают этого и для вас - стандартный или нет, это отличный способ предотвратить атаки XSS.

Что должно «решить» проблему для вас, так это вызвать htmlspecialchars_decode () в поле в php перед отправкой электронного письма. (Это не будет делать ничего для браузеров, которые автоматически не экранируют, и должны исправить экранирование, которое делает IE.)

Тем не менее, могу ли я предложить не , полагаясь на HTML, отправленный клиентом? Гораздо лучшим решением было бы сгенерировать таблицу на PHP и избежать приема HTML от клиента, который просто требует инъекции. По крайней мере, убедитесь, что вы очищаете свой HTML, прежде чем отправлять его по электронной почте.

1 голос
/ 07 ноября 2011

То, как вы устанавливаете значение текстовой области, также может повлиять на это.Вы должны установить значение следующим образом:

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

Использование .html () (и даже .text ()) должно применяться только к тегам, в частности..val () используется главным образом для установки переменных поля формы.Конечно, они взаимозаменяемы, но вы не знаете, какие могут быть побочные эффекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...