将换行符/回车符作为隐藏字段值

时间:2009-03-20 20:47:03

标签: html post newline hidden-field carriage-return

我需要通过隐藏字段发布多行数据。数据将在发布后在文本区域中查看。如何以html格式发布换行符/回车符?

我试过\ r \ n但是只发布了实际的“\ r \ n”数据

<input type="hidden" name="multiline_data" value="line one\r\nline two" />

有办法做到这一点吗?

4 个答案:

答案 0 :(得分:11)

而不是使用

<input type="hidden">

尝试使用

<textarea style="visibility:hidden;position:absolute;">

答案 1 :(得分:9)

虽然技术上允许在&lt; input&gt;的隐藏状态下使用新行(回车和换行符),但应该对它们进行转义以与旧版浏览器兼容。您可以使用应用程序识别的专有字符串替换所有回车符(\u000D\r)和所有换行符(\u000A\n)来执行此操作回车符或换行符(如果原始字符串中存在,也会进行转义)。

  

由于不符合标准的浏览器可能知道&#10;&#13;是新行并从值中删除它们,因此简单的字符实体在此处不起作用。

实施例

例如,在PHP中,如果您将echo传递给textarea的值,则应包含换行符(以及未转义的字符串)。

  

&lt; textarea&gt;带有\包含的一些文字   和\ r \ n作为提交值&lt; / textarea&gt;

的新行

但是,在PHP中,如果您要echo&lt; input&gt;的属性的值\r标记,您将使用您的专有字符串(例如\n和{{1}})转义新行,并在提交的值中转义您的专有字符串的任何实例。

  

&lt; input type =“hidden”value =“某些包含\\的文字\ r \ n和新行\\ r \\ n作为提交值”&gt;

然后,在其他地方使用该值(插入数据库,发送电子邮件等)之前,请务必在必要时取消提交的值。

放心

作为进一步的保证,我问WHATWG,目前HTML规范的编辑Ian Hickson回答说:

  

bfrohs 有关&lt; input type = hidden&gt;的问题 - 值中是否允许换行和回车?它们在Text状态和Search状态中被明确禁止,但没有提到隐藏状态。如果没有,是否有可接受的HTML解决方案用于存储来自textarea的表单数据?

     

Hixie 是的,他们被允许// iirc //由于遗产原因你可能希望逃避它们,因为有些浏览器将它们标准化//我忘了如果我们修复了这个//规范

     

Source

答案 2 :(得分:5)

真的取决于字符集,但&amp;#10;应该换行和&#13;应该回车。您应该能够在value属性中使用它们。

答案 3 :(得分:2)

你没有说明这是什么或者你正在使用什么技术,但是你需要意识到你不能相信隐藏的领域保持价值=“第一行 第二行“,因为恶意用户可以在POST发回之前篡改它。由于你以后将值放在&lt; textarea&gt;中,你肯定会受到跨站点脚本攻击的影响除非您在回写之前验证和/或清理“multiline_data”字段内容。

将值写入隐藏字段并将其读回时,通常最好将其保留在服务器上,作为会话或页面流的属性,或者您的环境为此类事件提供的任何内容。< / p>