[請益] 如何確保使用者確實在剛好5分鐘作答

看板PHP作者 (Freebug)時間1年前 (2023/01/28 20:32), 編輯推噓5(509)
留言14則, 5人參與, 最新討論串1/2 (看更多)
我最近在開發一個「線上測驗」的網頁 前端配合後端PHP 線上測驗的系統要剛好在5分鐘讓使用者作答 不能提早交卷也不能遲交 雖然我可以用前端的JavaScript 計時器計時 不過這樣只能防君子不能防小人 不法人士還是可以透過開發者工具偽造請求繞過網頁的計時器 所以這問題勢必要用後端來解決 我起初的想法是在後端開始出題時先用session記錄當時的timestamp 然後之後當伺服器後端接收到任一請求時,檢查收到時的timestamp跟當初session記錄的 timestamp相減是否剛好為5分鐘 不過這樣又會有另外一個問題 因為網路傳遞請求一定會有延遲 而每次的延遲時間都不同(也會根據使用者網路情況有所差異) 所以不管前端後端好像都無解? 各位有什麼想法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.12.25.127 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1674909139.A.28B.html

01/28 21:33, 1年前 , 1F
把時間存在 db 勒?
01/28 21:33, 1F

01/28 23:31, 1年前 , 2F
我會覺得你這個前後端都要做, 前端做為正好 5 分鐘的介面
01/28 23:31, 2F

01/28 23:31, 1年前 , 3F
後端 PHP 則檢查是否時間正確
01/28 23:31, 3F

01/28 23:32, 1年前 , 4F
不過網路延遲這個無解, 你只能容許某個程度的誤差
01/28 23:32, 4F

01/28 23:32, 1年前 , 5F
(例如容許超過半秒到一秒等)
01/28 23:32, 5F

02/06 22:40, , 6F
開始測驗先存時間結束在判斷?
02/06 22:40, 6F

02/09 13:35, , 7F
以前學校的是個程式,鎖死還不能跳出程式,避免你上網
02/09 13:35, 7F

02/09 13:35, , 8F
02/09 13:35, 8F

02/21 01:04, , 9F
永遠不能相信前端,必須後端解決,以下思路供參考。推薦
02/21 01:04, 9F

02/21 01:04, , 10F
使用websocket. OnConnected時enqueue 到答卷列表中(如
02/21 01:04, 10F

02/21 01:04, , 11F
測試id 、userId、時間戳等),是否透過websocket執行
02/21 01:04, 11F

02/21 01:04, , 12F
交卷邏輯或僅做計時服務就看規劃,倘若使用量大我會將這
02/21 01:04, 12F

02/21 01:04, , 13F
做單一計時服務,交卷則透過使用測驗id 、使用者id 取得
02/21 01:04, 13F

02/21 01:04, , 14F
是否超時,時間永遠是該計時服務的時程故不用考慮對時。
02/21 01:04, 14F
文章代碼(AID): #1ZrHNJAB (PHP)
文章代碼(AID): #1ZrHNJAB (PHP)