【问题标题】:Displaying a synchronized countdown timer with server side automatic time logout?显示具有服务器端自动时间注销的同步倒计时计时器?
【发布时间】:2015-04-08 11:00:38
【问题描述】:

我正在关注this example 的 PHP 会话计时器,它使用 AJAX 调用来检查“时间”。

我希望能够为用户显示某种类型的显示,它只是一个 JavaScript 倒数计时器,例如:

function startTimer(duration, display) {
    var timer = duration, minutes, seconds;
    setInterval(function () {
        minutes = parseInt(timer / 60, 10);
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = minutes + ":" + seconds;

        if (--timer < 0) {
            timer = duration;
        }
    }, 1000);
}

window.onload = function () {
    var length = 60 * 5,
        display = document.querySelector('#time');
    startTimer(length, display);
};

var length 等于 php 文件中 $_SESSION['timeOut'] = SomeNumber; 指定的值。

如何将它们设置为完全同步并能够将倒计时输出到屏幕?还是我可以只利用 php 计时而不一定要创建一个 js 计时器?

【问题讨论】:

  • 如果你想在页面本身上看到倒计时,那么你必须使用 JavaScript; PHP 无法做到这一点(除非你不断地重新加载页面,这将是相当无意义的)。然而,恰好 1000 毫秒的超时值不会那么可靠,尤其是在更长的时间段内——您最好使用 JavaScript Date 对象来获取实际的当前客户端时间,并计算与此之间的差异。

标签: javascript php ajax session timer


【解决方案1】:

您可以使用 php 函数 time() 获取现在以秒为单位的时间,然后将其保存为登录时间在您的数据库中。每次用户刷新页面时。您必须向他发送 $_SESSION['timeOut'] + ($time_of_login) - time() 至极返回多少秒到达超时

$time_of_login 来自数据库

所以 php 文件看起来像:

var length = <? echo $_SESSION['timeOut'] + ($time_of_login) - time(); ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 2017-12-15
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多