我正在用PHP編寫一個Web應用程序,讓用戶進行模擬考試(選擇題)。我應該如何最好地跟蹤頁面請求之間的計時器?
考試時間,例如30分鐘。我不確定用什麼最好的方法來跟蹤用戶離開完成考試的時間。每個問題都從MySQL數據庫中提取,並作爲新頁面提供給用戶。
我應該在第一頁用Javascript(例如setInterval)啓動一個計時器,然後在檢索下一頁之前提交問題時將其發送到服務器?有沒有更優雅或有效的方式來做到這一點?
我正在用PHP編寫一個Web應用程序,讓用戶進行模擬考試(選擇題)。我應該如何最好地跟蹤頁面請求之間的計時器?
考試時間,例如30分鐘。我不確定用什麼最好的方法來跟蹤用戶離開完成考試的時間。每個問題都從MySQL數據庫中提取,並作爲新頁面提供給用戶。
我應該在第一頁用Javascript(例如setInterval)啓動一個計時器,然後在檢索下一頁之前提交問題時將其發送到服務器?有沒有更優雅或有效的方式來做到這一點?
倒計時JavaScript變量創建,測試存儲到一個表,時間用戶關聯,並在測試不再有效時在那裏放一段時間。這將允許查詢並找出學生剩餘的時間,以及在不允許的情況下阻止人們重新嘗試測試。
我會將開始時間存儲在一個cookie中,並且過期時間設置爲30*60 secs
。
假設他們有30分鐘整個測試和沒有休息,我會保存一個時間戳,當他們單擊開始。
$_SESSION['start_time'] = time(true);
然後你可以通過AJAX或者調查時,他們在頁面上,或者你可以設置運行通過setInterval()
<script>
var elapsedTime = <?=time(true) - $_SESSION['start_time'] ?>`;
var timer = setTimeout(function() {
if (elapsedTime > 30 * 6) {
clearInterval(timer);
alert('game over');
}
elapsedTime += 1;
}, 1000);
在會話中存儲開始時間似乎是最安全的方式。 – jeroen
最簡單的方法(不一定是最安全的)就是將開始時間存儲在cookie中。該開始時間值將在隨後的每個頁面上提供。 – jfriend00