2013-01-01 44 views
-1

我有一個問題頁面有一些問題(多選,真假)。在後頁的結果提交我想說明是這樣的:如何計算從用戶加載頁面/表單到提交頁面的時間?

Started on Tuesday, 1 January 2013, 04:09 AM 
Completed on Tuesday, 1 January 2013, 04:10 AM 
Time taken 47 secs 
Grade 7 out of a maximum of 10 (65%) 

我不知道如何計算開始時間和結束時間,顯示上述結果,以及如何計算從當用戶的負荷時直到他們提交表單。

我是新來的,我需要你的建議。我沒有問題,如果問題解決與PHP或JavaScript或jQuery的

+0

當用戶開始在$ _SESSION測驗,你可以把時間變量,並且當他完成自他開始以來已經過去的測驗計算時間。看看php日期函數 - date(「Y-m-d H:i:s」); – vodich

+0

@vodich如果用戶在兩個不同的標籤中打開相同的頁面,該怎麼辦? – redShadow

回答

1

確定這裏是我的解決方案:

1-用戶開始測驗,你把$ _SESSION VAR時間

$_SESSION['quiztime']=date("Y-m-d H:i:s"); 

2用戶完成測試,你檢查的時間通過(這個例子是在幾分鐘內你沒有60分,如果你需要秒)

$to_time = strtotime(date("Y-m-d H:i:s")); 
$from_time = strtotime($_SESSION['quiztime']); 
echo round(abs($to_time - $from_time)/60,2). " minutes"; 
+0

好吧我試試吧!非常感謝 –

1

我會把時間開始在一個cookie或會話,然後一旦他們完成它,只需從當前時間減去 - 這是所用的時間!

它可能看起來像這樣:

測驗頁:

session_start(); 
$_SESSION['startTime'] = time(); 
// This is where the quiz would be displayed 

測驗結果頁面:

session_start(); 
$totalTime = time() - $_SESSION['startTime']; 
echo $totalTime; 
+0

如果需要3秒鐘才能加載結果頁面,該怎麼辦? – jeremy

+0

有很多因素可能會導致錯誤的讀數,但是基於JavaScript的解決方案可能會導致更差的讀數。 –

+0

我完全不同意。 – jeremy

2

你可以做這樣的事情,並開始和結束時間戳將提交以及表格。然後您可以使用PHP進行計算。

var form = document.getElementById("form"); 

window.onload = function() { 
    var start = document.createElement("input"); 
     start.type = "hidden"; 
     start.name = "start"; 
     start.value = +new Date()/1000; //unix timestamp 

    form.appendChild(start); 
}; 

form.onsubmit = function() { 
    var stop = document.createElement("input"); 
     stop.type = "hidden"; 
     stop.name = "stop"; 
     stop.value = +new Date()/1000; 

    form.appendChild(stop); 
}; 
+0

我的形式是這樣的

「method =」post「>並提交按鈕你能幫助我如何將這個結果傳遞給php和計算嗎?一個例子?我是新的和有點困惑 –

+0

你的答案似乎很好,但我沒有undestard很好怎麼辦 –

1

我的「子彈-p屋頂工「解決方案將存儲服務器上的開始時間(在會話中)與每個表單生成的唯一ID相關聯並保存在隱藏字段中。

這樣可以防止用戶篡改它(他可能會更改唯一標識,但在這種情況下,表單將無效),並且您不依賴於啓用了JavaScript的客戶端。

<?php 
$form_uuid = uniqid(); 
$_SESSION['quiz_start_time'][$form_uuid] = time(); 

然後,在你的形式,把這樣的事情:

<input type="hidden" name="form_id" value="<?php print $form_uuid; ?>"> 

而且在提交表單處理程序:

<?php 
$form_uuid = $_POST['form_id']; 
if (!isset($_SESSION['quiz_start_time'][$form_uuid])) { 
    // The user is trying to do something nasty (or the session just expired) 
    // Return something like a 400 error 
} 
else { 
    $start_time = $_SESSION['quiz_start_time'][$form_uuid]; 
    // Do other form processing here.. 
} 
+0

好吧我正在嘗試它,thanx我的朋友! –

+0

如何將您的答案與上面的vodich答案結合起來? –

+0

「整合」是什麼意思?他們是同一件事的兩種不同的方法,你想要添加什麼?..? – redShadow

相關問題