【问题标题】:Easiest way to persist data on a PHP page在 PHP 页面上保存数据的最简单方法
【发布时间】:2009-06-24 14:01:09
【问题描述】:

我正在开发一个 Web 应用程序(使用 PHP 开发),当用户发布任何服务请求时,用户必须填写一份很长的表格。

一旦用户填写并提交表单,就会加载另一个页面(确认页面),其中会显示用户填写的所有值。我必须指出,在这个阶段数据还没有保存到 MySQL。现在在此页面上,用户可以保存服务请求或返回。

我的问题从这里开始。当用户返回时。填写的所有数据丢失了。顺便说一句,用户倾向于使用浏览器的后退按钮,而不是确认页面上提供的后退按钮。

如何持久化用户填写的数据,以便用户可以编辑/更改数据并再次提交更改的数据。

【问题讨论】:

  • 哇,竞争性投票!

标签: php javascript


【解决方案1】:

如果您还没有将其持久化到数据库中,您可以做的一件事是将值存储在用户会话中。因此,当用户前进时,将信息保存到会话中,然后当他们回击时,从会话中加载信息。然后当他们最终确定数据时,您可以将其发送到数据库。

【讨论】:

  • 或 cookie,如果数据不是私人性质的。
【解决方案2】:

你可以使用代码:

`session_cache_limiter('must-revalidate');`

这对我很有效。请记住,这一行必须在 session_start() 之前。无论如何,这对我很有用,因为我不必处理会话附带的所有会话变量。

或将表单数据放入会话中,如下所示: 代码:

$_SESSION['myFormData'] = $_POST;

【讨论】:

  • 这成功了。不幸的是我只能给1分,否则我会给你10分。谢谢你。
【解决方案3】:

可能最简单的方法是将数据存储在会话中。让您的数据输入表单检查会话以查看数据是否存在,如果存在,请使用该数据预填充表单。

一旦他们完成该过程并将数据存储在数据库中,请从会话中清除这些值。

【讨论】:

    【解决方案4】:

    使用 cookie 和 JavaScript,您可以:

    1. 提交表单时将所有值存储在 cookie 中
    2. 使用 onload 处理程序检查 cookie 并使用在 cookie 中找到的数据填充表单

    不要忘记以允许没有 cookie 或 JavaScript 的用户使用页面的方式对其进行编码;他们只是没有为他们填写表格。

    【讨论】:

      【解决方案5】:

      每隔一段时间就会有人提出一个好的解决方案。这是那个时候。

      自 IE8 以来所有主要浏览器现在都支持 HTML 5 离线存储。考虑到这一点,我决定一劳永逸地处理表单状态,以便所有脚本语言甚至 HTML 页面都可以保持表单状态。不需要cookies,不需要占用内存的会话,不需要服务器端编程,您可以部分填写表格,去您想要的任何URL,回来,表格就在您离开的地方。只需删除一些小脚本即可完成。

      这里是免费的 -> http://www.jasonsebring.com/dumbFormState

      让我知道你的想法。

      【讨论】:

      • 谢谢。这是一件很棒的事情。
      【解决方案6】:

      使用sessions。它们非常易于使用。

      【讨论】:

        【解决方案7】:

        在您的确认页面上,您可以放置​​一个表单,其中包含包含所有值的隐藏字段和一个返回提交按钮,该按钮会将它们发布到上一页。您还可以在此表单上设置第二个提交按钮,该按钮将发布到将值写入数据库的 url。

        【讨论】:

        • 用户倾向于使用浏览器的后退按钮,而不是确认页面上提供的后退按钮。
        • 浏览器的后退按钮保留表单上的所有数据。
        • 不,如果它是 PHP 页面,则不会。我找到了我的问题的答案。 haim evgi 的答案成功了。
        【解决方案8】:

        几年前我做了一个向导,其中一个要求是用户应该能够进入下一个/上一个,甚至可以来回跳转到已完成的步骤,所以如果用户完成了第 4 步并且通过单击前 2 次后退 2 步,他/她应该能够单击“向导进度器”上的第 4 步并跳转到第 4 步。为此,我使用了Serializing objects - objects in sessions 并将“向导对象”存储在数据库中, iirc 工作得很好。

        编辑:啊,是的。另一个要求是,用户应该能够在几周后返回并完成向导,或者如果该用户的邮件地址存在一个放弃向导,则可以继续放弃向导。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 2010-10-30
          • 2015-04-11
          • 2014-11-09
          • 1970-01-01
          • 2015-03-19
          • 2016-08-27
          相关资源
          最近更新 更多