使用jQuery将文本区域文本安全地存储在隐藏字段中,然后稍后在PHP中使用该文本


Safely store textarea text in a hidden field using jQuery, then use the text later in PHP

我有一个包含文本区域的模态。当用户输入一些文本,然后提交模态时,模态关闭,我想将文本存储在HTML中的隐藏字段中。

  1. 从文本区域安全地转义所有文本以存储在HTML属性中的最佳方法是什么?必须保留换行符。

  2. 如果用户再次打开模态,我如何获取存储在隐藏字段中的文本,并将其原样放回文本区域,并添加换行符?

  3. 当用户提交表单时,我如何再次规范隐藏字段中的文本,以便使用换行符将其以原始形式使用或保存到数据库中?

我对使用JvaScript存储文本区域文本的替代解决方案持开放态度,以便最终将其传输到PHP。

从文本区域安全地转义所有文本以存储在HTML属性中的最佳方法是什么?必须保留换行符。

使用.val()是最好的选择,它不允许文本区域的内容脱离隐藏的值属性。使用本机Javascript .value也可以工作并且是安全的,.val()只是它的包装器。

如果用户再次打开模态,我如何获取存储在隐藏字段中的文本,并将其原样放回文本区域,并添加换行符?

当模式打开时:

// #mytextarea = the textarea on the modal
// #myhidden = the hidden on the main page
$('#mytextarea').val($('#myhidden').val()); // set the modal textarea to the value of the hidden

当模式关闭或"保存"时:

$('#myhidden').val($('#mytextarea').val());

当用户提交表单时,我如何再次规范隐藏字段中的文本,以便使用换行符将其以原始形式使用或保存到数据库中?

你不需要做任何事情来保留新的线路。使用Prepared语句只需将原始post值保存到数据库中。当您在某个页面上输出值时,可以使用PHP的nl2br()将新行转换为<br />。只有当输出到输入值以外的任何值时,才需要转换新行。另外,不要忘记通过htmlspecialchars()运行它来防止XSS。

希望这就是您想要的。

以下是JSFiddle结账:http://jsfiddle.net/ganeshprabhu1994/THPVa/2/

HTML:

    <textarea id="ta" rows="10" columns="20">
 173-B,Perambalur Road,
 Near Water Tank,
    Thuraiyur-621010
</textarea>
<input type="button" id="cut" value="Cut" />
<input type="button" id="paste" value="Paste" />
<input type="hidden" id="hdn1" value="" />

脚本:

$(function(){
$('#cut').click(function(){
    $('#hdn1').val($('#ta').val());
    $('#ta').val("");
});
$('#paste').click(function(){
    $('#ta').val($('#hdn1').val());
});
});
相关文章: