【问题标题】:How can I create a timer in cookies?如何在 cookie 中创建计时器?
【发布时间】:2023-04-09 04:14:01
【问题描述】:

我有一个包含 5 个子页面的页面(每个页面都有不同的页面链接)我想要做的是创建一个计时器来计算用户在电话上花费了多少秒。

例如

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

第一次使用点击登陆页面“main.php”在这里我需要启动一个计数器,如果用户点击选项卡 1、选项卡 2、选项卡 3 或选项卡 4,我希望计时器仍然计算秒数用户在这些页面上的花费。

我使用了一个名为“runner”http://plugins.jquery.com/runner/ 的 jQuery 插件在我的页面上有一个计数器,但是当用户切换到不同的选项卡时,计数器会重置。我唯一的问题是如何创建一个计数器,将值传送到其他选项卡而不丢失计数器。

问题总结 我的问题的核心是如何在 cookie 中建立一个实时计数器?这样cookie值将每秒增加1。在我清除不同页面中的 cookie 之前它不会停止。

我正在使用 PHP 来完成其余的代码

感谢您的帮助。

【问题讨论】:

  • 您是否尝试过执行此功能?您遇到的具体问题是什么(即您是否需要知道如何在 javascript 中编写 cookie?)
  • 您想区分用户在每个页面上的停留时间吗?还是您只想知道从第一次点击着陆页到最后一页结束需要多长时间?
  • 将开始时间存储在 cookie 中,然后当您想知道它已经过去了多长时间时,将当前时间与开始时间进行比较。
  • 我遇到的问题是在 cookie 中保留一个实时计数器。所以每一秒过去,我都需要将它存储到一个 cookie 变量中,以便我可以在需要时检索它。

标签: php jquery cookies timer stopwatch


【解决方案1】:

您可以在 cookie 中存储开始时间并在清除它之前读取结束时间。或者使用会话来执行此操作?

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

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

【讨论】:

  • 感谢您提供的代码。此代码检查会话是否存在,但它没有告诉我如何保持时间自动运行
  • 您的 javascript 计数器有一个 startAt 参数。您可以使用它在时间$time_spent 开始。 echo '$(\'#runner\').runner({ countdown: true, startAt: $time_spent,。注意 startAt 以毫秒为单位,所以使用 [microtime]php.net/manual/en/function.microtime.php
  • 是的,我知道这一点。但我遇到的困难是让柜台在饼干中而不是在div中。我需要知道如何重新分配每个 seacond 的 cookie 值
  • setCookie('timespent',0,365); window.setInterval(function() {setCookie('timespent', parseInt(getCookie('timespent'))+1,365)}, 1000); 并使用来自 b.e. 的 set/get cookie [javascript cookie]hardcode.nl/subcategory_1/…
【解决方案2】:

您可能正在寻找一种使用 Javascript 设置 cookie 的方法。如果你真的想,你可以每秒拨打createCookie()。您还必须跟踪开始时间以获取在页面上花费的实际时间。但这只是为了帮助您走上正轨。无论如何,肯定有更好的方法。听听其他的cmets吧。

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 上讨论和发布的那样

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2014-06-16
    • 2016-06-19
    • 1970-01-01
    • 2017-10-30
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多