我正在編寫一個應用程序,驅動器在多個路由器中執行配置命令。 這裏是它是如何設計:多個瀏覽器選項卡和「後退」按鈕與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