2013-04-08 93 views
0

我有一個包含5個子頁面的頁面(每個頁面都有不同的頁面鏈接),我正在嘗試創建一個計時器來計算用戶在通話過程中花費的秒數。如何在Cookie中創建計時器?

例如

main.php << the landing page 
tab1.php << additional tab 
tab2.php << additional tab 
tab3.php << additional tab 
tab4.php << additional tab 

首次圍繞着陸頁「main.php」關於利用點擊這裏我要開始一個計數器,如果用戶點擊選項卡1,TAB2,TAB3或標籤4我希望計時器仍能計算用戶在這些頁面上花費的秒數。

我已經使用了一個名爲「runner」的jQuery插件http://plugins.jquery.com/runner/在我的頁面上有一個計數器,但是當用戶切換到不同的選項卡時,計數器被重置。我唯一的問題是如何創建一個計數器,將價值傳遞給其他選項卡而不會丟失計數器。

問題總結 我的問題的核心是如何在cookies中建立一個活的計數器?以便cookie值每秒增加1。它不會停止,直到我清除不同頁面中的cookie。

我使用PHP做代碼

其餘我感謝你的幫助。

+1

發表您是否嘗試過做任何事情來實現這個功能?你有什麼具體問題(即你需要知道如何在javascript中編寫cookie?) – 2013-04-08 19:36:13

+1

你想區分用戶在每個頁面上的時間長短嗎?或者你只想知道從第一次登陸到登錄頁面到最後一頁結束需要多長時間? – Mercurybullet 2013-04-08 19:38:44

+0

將開始時間存儲在cookie中,然後當您想知道它已進行了多長時間時,請將當前時間與開始時間進行比較。 – 2013-04-08 19:47:58

回答

0

您可以將開始時間存儲在您的Cookie中,並在清除之前閱讀結束時間。或者使用會話來做到這一點?

if(!isset($_SESSION['start']))$_SESSION['start'] = time(); //on your landing page 

    $time_spent = time()-$_SESSION['start']; //on your tabs 
+0

感謝您的代碼。此代碼檢查會話是否存在,但它沒有告訴我如何保持時間行情 – Mike 2013-04-08 20:23:08

+0

您的JavaScript計數器有一個startAt參數。你可以用''time_spent'開始。 'echo'$(\'#runner \')。runner({ 倒計時:true, startAt:$ time_spent,'。注意startAt以毫秒爲單位,所以使用[microtime] http://php.net/manual/ en/function.microtime.php – 2013-04-08 20:41:00

+0

是的,我意識到這一點,但我有diffucultiey與保持計數器在餅乾而不是在一個div。我需要知道如何重新分配cookie值每海秒 – Mike 2013-04-08 21:18:59

0

您可能正在尋找一種使用Javascript設置cookie的方法。如果你真的想,你可以每秒撥打createCookie()。您還必須跟蹤開始時間以獲取頁面上的實際時間。但這只是爲了幫助你走上正軌。無論如何,肯定有更好的方法。只聽其他評論。

var unixTimestamp = Math.round(new Date().getTime()/1000); 
window.setInterval("createCookie('myCookie', unixTimestamp)", 1000);  

function createCookie(c_name, value) { 
    var expires = ""; 
    document.cookie = c_name + "=" + value + expires + "; path=/"; 
} 

function getCookie(c_name) { 
    if (document.cookie.length > 0) { 
     c_start = document.cookie.indexOf(c_name + "="); 
     if (c_start != -1) { 
      c_start = c_start + c_name.length + 1; 
      c_end = document.cookie.indexOf(";", c_start); 
      if (c_end == -1) { 
       c_end = document.cookie.length; 
      } 
      return unescape(document.cookie.substring(c_start, c_end)); 
     } 
    } 
    return ""; 
} 

前面已經討論過,並在https://stackoverflow.com/a/4825695/407697

相關問題