2014-04-28 32 views
0

我正在用PHP編寫一個Web應用程序,讓用戶進行模擬考試(選擇題)。我應該如何最好地跟蹤頁面請求之間的計時器?

考試時間,例如30分鐘。我不確定用什麼最好的方法來跟蹤用戶離開完成考試的時間。每個問題都從MySQL數據庫中提取,並作爲新頁面提供給用戶。

我應該在第一頁用Javascript(例如setInterval)啓動一個計時器,然後在檢索下一頁之前提交問題時將其發送到服務器?有沒有更優雅或有效的方式來做到這一點?

+0

在會話中存儲開始時間似乎是最安全的方式。 – jeroen

+0

最簡單的方法(不一定是最安全的)就是將開始時間存儲在cookie中。該開始時間值將在隨後的每個頁面上提供。 – jfriend00

回答

1

倒計時JavaScript變量創建,測試存儲到一個表,時間用戶關聯,並在測試不再有效時在那裏放一段時間。這將允許查詢並找出學生剩餘的時間,以及在不允許的情況下阻止人們重新嘗試測試。

0

我會將開始時間存儲在一個cookie中,並且過期時間設置爲30*60 secs

php.net

2

假設他們有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); 
+0

清除cookies並不難。這不會重置計時器嗎? – tadman

+1

@tadman - 他們可以在會話中存儲進度,然後如果他們清除了會話cookie,他們會清除所有進度 – Victory

+0

順便提一下,'time()'不需要參數 - 您可以跳過'true'。 – ceejayoz

相關問題