【问题标题】:html textarea html tags missed after send form in IE only仅在 IE 中发送表单后,html textarea html 标签丢失
【发布时间】:2011-11-07 16:04:28
【问题描述】:

我有这个问题: 我有一个带有 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 脚本中获取值:

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

然后我通过电子邮件发送。

使用 Chrome、Firefox、Safari、Opera 时,我收到了带有表格格式的电子邮件。只有 IE 给我这个问题。我用开发者工具在IE下检查过,textarea value2的值填满了格式化表格(带html标签)。

有什么想法可能是错的吗?

【问题讨论】:

  • 这可能是标题问题,或者 IE 为你做了一些转义。

标签: php jquery html forms


【解决方案1】:

您如何设置 textarea 的值也可能对此产生影响。您应该通过以下方式设置值:

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

使用 .html()(甚至 .text())应该只应用于标签,特别是。 .val() 主要用于设置表单字段变量。当然,它们是可以互换的,但你不知道可能会出现什么副作用。

【讨论】:

    【解决方案2】:

    我几乎可以肯定 Internet Explorer 会自动转义 html,因为您将它作为文本框的一部分提交。实际上,我很惊讶其他浏览器没有为您这样做——无论标准与否,这是防止 XSS 攻击的好方法。

    应该为您“解决”问题的方法是在发送电子邮件之前在 php 中的字段上调用htmlspecialchars_decode()。 (这对于没有自动转义的浏览器没有任何作用,并且应该修复 IE 所做的转义。)

    也就是说,我可以建议依赖客户端发送的 HTML 吗?一个更好的解决方案是在 PHP 中生成表格并避免从客户端接受 HTML,这只是要求注入。至少,确保在发送电子邮件之前对 html 进行清理。

    【讨论】:

    • 感谢您指出这一点。因为我是初学者,我将不得不学习如何保护这个简单的脚本。谢谢!
    猜你喜欢
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多