2012-07-23 133 views
0

我設計一個簡單的拖放測驗之間保持狀態。我們限制每個框/答案獲得正確答案的嘗試次數。但是,我想保持測試的功能和狀態與顯示/視圖分離。 當前,當用戶嘗試通過在問題框上放置答案框來獲得正確答案時,會對返回「true」或「false」值的PHP頁面進行ajax調用。 我們一直在評估我們是否希望在PHP頁面上使用Session變量,或者更簡單的跟蹤每個盒子消耗多少次嘗試。爲了保持這些數據在服務器上的狀態,最好(爲了好的形式)保存 - 所以客戶端不知道發生了什麼。會話變量似乎對我有意義 - 當用戶繼續嘗試不同的問題/回答組合時,服務器會跟蹤嘗試的次數並返回(在Ajax響應中)用戶問題的結果(對/錯,以及如果有的話,還有多少次嘗試,但是我想知道是否有更好的解決方案。任何輸入?HTML頁面和PHP服務器頁面

回答

0

會議似乎是一個不錯的選擇我。 Cookies可能會被篡改,所以如果您需要錯誤計數是準確的,我會避免這種情況。

+0

所以,如果我部署此代碼,例如10名學生,將在服務器遇到問題,如果兩個學生在同一時間對測驗的工作?還是會話變量唯一存儲爲每個登錄的客戶端?那麼,如果Joe試過兩次盒子,Bill的盒子1是否會顯示爲已經嘗試過兩次? – 2012-07-23 19:41:37

+0

@SpencerAllenGardner - 會話在用戶級別;一個用戶的會話數據將不會被另一個用戶使用。這是通過爲每個用戶創建一個唯一的標識符來完成的(PHP庫應該爲您負責)。通常,id存儲在cookie中,但它也可以作爲HTTP請求中的參數。 – 2012-07-23 19:45:32

+0

從準MVC的角度來看,最好的做法是:返回一些XML/JSON,並且該特定框的嘗試次數最好?或者,如果返回「真」或「假」值來確定盒子是否可以再次嘗試,它會更好還是更乾淨?我猜測後者。記住 – 2012-07-23 19:52:53

0

會議可能是你最好的選擇。 Cookie也可以使用,或者如果您可以保證瀏覽器中的HTML5 localStorage的可用性,您也可以使用它。

0

不幸的是保持功能獨立,不存在。您可以使用會話變量或與存儲在cookie中的會話ID配對的數據庫存儲。

0

商店當前用戶狀態進入會議(臨時存儲)並跟蹤他已經回答了什麼不能等在最後一步將數據存儲到數據庫或文件(永久存儲)。會話對於每個用戶都是單獨的。用戶不能更改您的網站會話。

Session usage