2013-04-08 86 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

相关问题