1

概述

这是我第一次使用 CodeIgniter 创建复杂的多部分表单。

我有一个依赖 AJAX Post 提交的 CodeIgniter 多部分表单(使用jQuery Form Plugin)。我在成功验证用户后预览表单,以检查他们的答案是否一切正常。他们可以通过“提交到数据库”按钮或“编辑表单”按钮将其提交到数据库,然后返回并更改他们想要检查的任何内容,然后循环再次开始!

问题

我的多部分表单具有文件输入和动态添加的 DOM 元素(例如,用户可以声明多个地址,因此将通过 JavaScript 添加四个文本框),我希望这些在一次编辑时保持不变。

我有几种攻击方法,但到目前为止都没有:

  1. 模拟浏览器后退按钮- 似乎很有效,但我记得我的控制器index()加载了新的表单视图,所以它没用。
  2. 从预览表单中取出所有数据,将它们放入一个数组中,将数组带到index(),计算动态添加的元素的出现次数,然后将它们全部显示出来——这对我来说非常乏味和复杂。另外,我不确定将所有$_POST数据传输到数组是否安全,但这是我能想到的最好的。

你们有什么建议或更好的方法来攻击这种过程吗?

任何帮助,将不胜感激。谢谢你。

4

1 回答 1

0

您可能需要根据您的第二个选项实施一个解决方案 - 是的,这很乏味,但没有其他方法可以做到这一点。一些要记住的事情:

您需要想出一种简洁的方式来存储您的数据。地址应存储为一个数组元素,如下所示:

<input type="text" name="addresses[1][street]">
<input type="text" name="addresses[1][city]">
<input type="text" name="addresses[1][county]">

这将允许您简洁地迭代您的数据结构以进行前端演示:

<? foreach ($data['addresses'] as $number => $address): ?>
   <? foreach ($address as $address_item => $value): ?>
      <input type="text" name="addresses[<?=$number?>][<?=$address_item?>]" value="<?=$value?>">
   <? endforeach; ?>
<? endforeach; ?>

这将提供对您的布局的完全控制,减少您必须用于存储 DOM 的 JavaScript 数量(这不是那么快速或高效)。

于 2013-02-24T15:20:10.320 回答