我正在编写一个应用程序,驱动器在多个路由器中执行配置命令。 这里是它是如何设计:多个浏览器选项卡和“后退”按钮与PHP
Page 1 Page 2 Page 3
+--------+ +--------+ +--------+
| data | PRG | data | PRG | steps |
| enter |------->| review |------->| exec |---+
| page | | page | | page | |
+--------+ +--------+ +--------+ | Ajax
^ |
| |
+--------+
- 用户在第一页上填写表单。
- 系统获取更多数据并将其显示在第二页上以另一种形式查看。
- 使用Ajax请求从第三页执行配置步骤。
我通过uniqid()生成一个ID并将其放入表单中的隐藏元素来处理多个浏览器选项卡/窗口。每个标签/窗口的数据存储在$_SESSION[$ID]
中。 Post-Redirect-Get用于摆脱烦人的表单重新提交。
挑战在于,当用户在浏览器中点击“返回”按钮时,会生成一个新的ID。这会导致$_SESSION
和Web表单不同步。我打算使用粘性表单来使应用程序像向导一样工作,但这需要ID在标签/窗口存在期间保持不变。
你能帮我找出我怎么区分“返回”按钮点击打开一个新标签?
谢谢! PN
你不能,不可靠的反正。有些方法可以在离开页面时检测“卸载”事件,但它们并不标准化,也不可靠。 – 2013-04-29 14:40:02
好的,这有助于:)因为可靠性很重要。我可能需要考虑并提出一个更好的设计来消除这个要求。谢谢! – pn8830 2013-04-29 14:45:28
除非你有一个zillion字段或非常大的数据,隐藏的表单字段会将数据绑定到特定的选项卡/窗口而不需要服务器端的同步。 – 2013-04-29 14:46:08