我正在做在線考試管理,我已經爲考試設置了一個持續時間爲5分鐘。如何設置計時器功能
當學生參加此測試時,計時器開始減少。
我做了這個計時器使用JavaScript。
問題是如果學生刷新頁面計時器從第一個開始。如何刷新頁面時如何使時間保持靜態?
我正在做在線考試管理,我已經爲考試設置了一個持續時間爲5分鐘。如何設置計時器功能
當學生參加此測試時,計時器開始減少。
我做了這個計時器使用JavaScript。
問題是如果學生刷新頁面計時器從第一個開始。如何刷新頁面時如何使時間保持靜態?
您無法避免重置計時器,因爲當頁面重新載入時,所有HTML和JS重新載入。 您可以將當前時間存儲在「cookie」中。查找「在Javascript中使用cookie」。
工作流程將如下
JavaScript中只留下頁面或頁面刷新的唯一東西就是cookie。
您可以定期設置爲時間留下的cookie值,並檢查它在頁面加載,如果它不爲0
你不能在該值開始計時。然而,你可以做另外一件事,比如說不太禮貌:
使用ajax來更新數據庫,說X學生已經開始考試了,如果它刷新了這個頁面,讀取這個值並把他的機會吹掉;)
總之:Cookie或AJAX(PHP)
AJAX計時器。做一個PHP頁面「記住」學生的時間,JavaScript會告訴PHP從存儲的時間中扣除「秒」或無論多長時間。
或者,嘗試使用cookie。
1)檢查cookie存在
2)如果沒有設置cookie從開始時間5分鐘過期。 如果是,請檢查Cookie是否過期。 3)如果cookie過期,則顯示「Time up」 如果不是,繼續等待。
問題是Javascript可以從瀏覽器的地址欄運行,因此在安全測試環境中並不是一個好選擇。
製作像這樣在PHP:
<script type="text/javascript">
var remainingtime = <?php echo $remainingtime; /* remaining seconds */ ?>;
</script>
然後從JavaScript你能讀懂這個變量的值。
編輯:當然後來你必須檢查服務器端,如果時間是正確的,因爲JavaScript值可能是假的。
運行計時器服務器端並使用AJAX對其進行輪詢。
「他只會在頁面或頁面刷新期間停留在JavaScript中的東西是餅乾。」 - 或AJAX值,本質上是服務器端的cookies! – Moshe 2009-12-09 05:26:10
的確,如果你涉及AJAX,你甚至可以使用會話。 – BeaverProj 2009-12-09 05:59:30