php - 如何在php中实现倒计时

标签 php timer

我正在用 php 开发一个在线测验网站。我已经完成了大部分问题-一次从数据库中随机选择一个问题,并且我有以下 php 文件:

database.php, index.php, login.php, logout.php, quiz.php, result.php.

  • 当用户登录时,他将被重定向到索引页面(主页) 包含测验和结果,
  • 然后当用户选择测验时,他将 重定向到 quiz.php,他可以在那里参加测验
  • 稍后当用户点击完成时,用户将被重定向到他可以访问的主页 看看他的结果,一切正常。

现在我想附加一个倒数计时器(使用剩余的分钟和秒数),它将在用户参加测验时持续显示。

当计时器到期(达到 0)时,quiz.php 应该显示为空白,并且应该被重定向到主页,用户可以在其中看到结果。

我有以下倒数计时器代码,但我不知道如何实现它,所以有人可以帮助如何实现。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language ="javascript" >
        var tim;

        var min = 20;
        var sec = 60;
        var f = new Date();
        function f1() {
            f2();
            document.getElementById("starttime").innerHTML = "Your started your Exam at " + f.getHours() + ":" + f.getMinutes();


        }
        function f2() {
            if (parseInt(sec) > 0) {
                sec = parseInt(sec) - 1;
                document.getElementById("showtime").innerHTML = "Your Left Time  is :"+min+" Minutes ," + sec+" Seconds";
                tim = setTimeout("f2()", 1000);
            }
            else {
                if (parseInt(sec) == 0) {
                    min = parseInt(min) - 1;
                    if (parseInt(min) == 0) {
                        clearTimeout(tim);
                        location.href = "default5.aspx";
                    }
                    else {
                        sec = 60;
                        document.getElementById("showtime").innerHTML = "Your Left Time  is :" + min + " Minutes ," + sec + " Seconds";
                        tim = setTimeout("f2()", 1000);
                    }
                }

            }
        }
    </script>
</head>
<body onload="f1()" >
    <form id="form1" runat="server">
    <div>
      <table width="100%" align="center">
        <tr>
          <td colspan="2">
            <h2>This is head part for showing timer and all other details</h2>
          </td>
        </tr>
        <tr>
          <td>
            <div id="starttime"></div><br />
            <div id="endtime"></div><br />
            <div id="showtime"></div>
          </td>
        </tr>
        <tr>
          <td>

              <br />


          </td>

        </tr>
      </table>
      <br />


    </div>
    </form>
</body>
</html>

最佳答案

没有必要在 PHP 中制作计时器,除非您想使用 WebSocket 或任何其他可以保持连接的东西。 你所需要的(任何你已经部分实现的)是:

1 - Javascript 计时器,

var maxTime = 50000; // time in milliseconds
setTimeout(postFormFunction, maxTime)

2 - 自动发布

function postFormFunction() {
    getElementById('form1').submit();
}

3 - 最后但也是最重要的(对于真实应用程序)是确保用户不会作弊,因此您需要存储创建表单的时间,并检查发布时间,因为有经验的用户会阻止你的 JS 超时并占用他的无限时间,除非你检查它。

我不会为此提供任何代码,因为这是您应用程序的设计方式,您会将其存储在数据库中,还是使用 token ,甚至将数据存储在硬盘上...所以我相信您会发现当真正的应用程序到来时你的方式;)

关于php - 如何在php中实现倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47882352/

相关文章:

php - Laravel 迁移 XML 数据类型

javascript - 允许访客和站点成员使用 ajax、php/pdo、css、html 查看谁在线/登录

ios - 滚动 UITableView 期间计时器将重置并停止运行

php - 如何将特定目录中的所有重写 x.php 转换为 x.css?

php - 为什么我的内连接查询不起作用

php - 使用 PHP 配置发送到 Sentry 的内容

Java 定时器

android - 计时器 - 计时

javascript - AngularJS中的超时函数

javascript - 如何使用Java脚本刷新 GridView 内的标签?