代码之家  ›  专栏  ›  技术社区  ›  Michal M

当表单数据部分位于单独的页面上时,如何存储它们?

  •  4
  • Michal M  · 技术社区  · 16 年前

    比如:

    Step 1  >  Step 2  > Step 3 > Thank You!
    

    我已经想出了一些方法来解决这个问题,但其中任何一种都不能让我信服:

    1. 在数据库中存储表单数据
      我可以想象一个表格,其中列代表每个问题,最后一列代表一个问题 bool 评估表单是否已完成?
      complete = 0

    2. 将表单数据存储在会话数据中。
      另一方面,它不必将数据存储在数据库中(取决于会话的处理方式),所有信息都将存储在Cookie中。但若浏览器不支持cookie或者用户禁用了cookie(很少见,但也会发生),或者表单中有文件附件,那个么这是不可能的。

    3. echo '将上一页的表单数据作为 <input type="hidden"> 在下一页
      是的,我知道这是一个相当愚蠢的想法,但这是另一个选择。贫穷,但它是。

    选项 1 似乎是最好的,但我觉得没有必要在DB中存储临时数据。如果这成为一个非常受欢迎的表单,有很多访问者填写它呢?更新/删除的数量可能很大?


    编辑

    大卫问了一个好问题。我用的是什么技术?

    5 回复  |  直到 16 年前
        1
  •  2
  •   TLiebe    16 年前

    我认为选项1和选项2之间的选择取决于您存储了多少数据。我认为在大多数情况下,您在表单上收集的数据量相当小(几千字节)。在这种情况下,我认为将其存储在会话数据中是一种可行的方法。在来回传递那么多数据时没有那么大的开销。此外,除非您的用户在有严格安全策略的计算机上,否则应用程序应该可以工作。如果您明确了页面要求,用户可以决定是否继续。

        2
  •  1
  •   Langdon    16 年前

    我同意选项1是最好的,因为它比其他2有一些好处:

    • 您的脚印(每个页面请求)将比选项3轻

    如果您担心性能,您可以将要保存的数据排队,因为不需要近实时地保存数据。

        3
  •  0
  •   CoderDennis    16 年前

    如果站点变得流行,并且需要在多个web服务器上运行,那么您的会话数据无论如何都需要保存在某种数据库中。在这种情况下,您需要一个能够处理大量事务的数据库。

    我同意这是一个独立于平台的问题。堆栈溢出用户喜欢在问题中查看代码,喜欢在答案中给出代码,这就是为什么我通常会问某人使用的语言。

        4
  •  0
  •   AnthonyWJones    16 年前

    老实说,只需使用选项1中的数据库,就可以停止担心数据量了。认真地说,如果你的网站是如此成功,以至于成为了一个问题,那么你应该能够资助一个重新鞋面来应对。

        5
  •  0
  •   Rudd Zwolinski    16 年前

    从上一步获取POST数据并添加隐藏数据没有错 input

    有哪些负面影响?页面上有很多额外的元素?不是用户看到的。您所要做的就是为您要求用户提供的每个输入添加一个元素(在每个页面上,如果您希望用户能够返回)。除了这些不会造成任何视觉混乱的元素之外,没有什么额外的东西。