2009-12-09 49 views
1

我正在做在線考試管理,我已經爲考試設置了一個持續時間爲5分鐘。如何設置計時器功能

當學生參加此測試時,計時器開始減少。

我做了這個計時器使用JavaScript。

問題是如果學生刷新頁面計時器從第一個開始。如何刷新頁面時如何使時間保持靜態?

回答

3

您無法避免重置計時器,因爲當頁面重新載入時,所有HTML和JS重新載入。 您可以將當前時間存儲在「cookie」中。查找「在Javascript中使用cookie」。

工作流程將如下

  1. 頁面加載和啓動一個定時器。
  2. 用戶重新加載頁面。
  3. 在Javascript中監聽onBeforeUnload(和onUnload)事件並編寫一個存儲當前時間的cookie。
  4. 當頁面重新載入時,從cookie中讀取並使用它。
  5. 當計時器結束時,一定要清除cookie。
2

JavaScript中只留下頁面或頁面刷新的唯一東西就是cookie。

您可以定期設置爲時間留下的cookie值,並檢查它在頁面加載,如果它不爲0

+0

「他只會在頁面或頁面刷新期間停留在JavaScript中的東西是餅乾。」 - 或AJAX值,本質上是服務器端的cookies! – Moshe 2009-12-09 05:26:10

+1

的確,如果你涉及AJAX,你甚至可以使用會話。 – BeaverProj 2009-12-09 05:59:30

1

你不能在該值開始計時。然而,你可以做另外一件事,比如說不太禮貌:

使用ajax來更新數據庫,說X學生已經開始考試了,如果它刷新了這個頁面,讀取這個值並把他的機會吹掉;)

3

總之:Cookie或AJAX(PHP)

AJAX計時器。做一個PHP頁面「記住」學生的時間,JavaScript會告訴PHP從存儲的時間中扣除「秒」或無論多長時間。

或者,嘗試使用cookie。

1)檢查cookie存在

2)如果沒有設置cookie從開始時間5分鐘過期。 如果是,請檢查Cookie是否過期。 3)如果cookie過期,則顯示「Time up」 如果不是,繼續等待。

問題是Javascript可以從瀏覽器的地址欄運行,因此在安全測試環境中並不是一個好選擇。

2

製作像這樣在PHP:

<script type="text/javascript"> 
var remainingtime = <?php echo $remainingtime; /* remaining seconds */ ?>; 
</script> 

然後從JavaScript你能讀懂這個變量的值。

編輯:當然後來你必須檢查服務器端,如果時間是正確的,因爲JavaScript值可能是假的。

+1

如果學生在瀏覽器中點擊刷新按鈕,會發生什麼情況。我該如何爲php變量賦值? – sathish 2009-12-09 05:46:05

+0

您必須存儲結束/開始時間(即使是結束時的檢查)......每當用戶刷新頁面時,您都會重新計算剩餘時間。 – TheHippo 2009-12-09 06:13:16

1

運行計時器服務器端並使用AJAX對其進行輪詢。