使用会话变量在浏览器返回序列期间维护表单数据

时间:2011-05-05 18:59:18

标签: php jquery forms

我有一个多页表单,带有后退按钮,如果用户点击回来,我正在尝试使用服务器端方式来维护表单数据。

我有一个这样的后退按钮:

<button id="backButton">Back</button>

按钮处理程序如下:

$('#backButton').live('click',function() {
        window.history.back();
    });

在提交表单的第一部分之后,我将所有提交的数据放入$ _SESSION变量中。我甚至可以在表单的第二部分回显这些变量,但是当我单击后退按钮转到表单的第一部分时,会话变量不会延续。

我正在正确地开始会话,并且我将会话变量用于网站的其他各个部分,并且它们可以完美地工作。

按下后退按钮后如何携带变量?

2 个答案:

答案 0 :(得分:1)

森海塞尔, 我无法处理你的具体情况,但我可以解决你的问题。以下是我的想法:

  1. 当用户点击“返回”时,他们通常从浏览器缓存加载页面。因此,浏览器不要求PHP使用会话变量重新解析页面。尝试按shift或控制F5从服务器重新请求页面。
  2. #1成功与否是无关紧要的,因为没有用户会刷新页面,认为他们的结果会返回。您必须依赖浏览器或JavaScript。
  3. 简要回顾一下,让我觉得以下解决方案是您最好的选择:
  4. 你可以......

    • 使用JavaScript检索表单数据并将内容保存到cookie中,无论何时加载表单,都会加载(安全!!注意XSS ..)。你似乎使用jQuery,这将有所帮助!我不确定安全性,但请阅读$.('#formID').serialize()

    • 依靠浏览器的原生表单保存组件。在查看堆栈溢出时,I found a similar question that had an answer that can help you.总之,如果您的表单是由JS 自动生成的,则该页面是不可缓存的(可能https,或者您的服务器说no-cache),你不能依靠浏览器来保存表单。

    如果我的答案有帮助,请告诉我。

答案 1 :(得分:0)

#p> SoreThumb的回答#1是我在评论中提出的建议。

但如果是这样,那肯定不是无关紧要的。

您可以告诉浏览器在首次加载时不要缓存它。

请参阅this related questionthis tutorialthis thread