如何自动将服务器的当前时间戳放入PHP的strtotime()函数中?

时间:2019-03-24 18:27:20

标签: javascript php jquery html ajax

我正在尝试制作一个倒计时15秒并使用PHP和JQuery显示它们的程序。我需要能够将服务器的时间戳自动加载到strtotime函数中并将其设置为计时器的起点,并使计时器的终点在此点之后15秒,有什么办法可以实现? / p>

我尝试过专门设置时间,并且计时器可以在这些时间点之后计数到15秒,但是我需要它相对于当前时刻自动设置这些时间,因为我希望它在某个时间启动和停止计时器程序运行时未确定的点。我还尝试了参考值“现在”和“ -15秒”,但这些值似乎将计时器停止在“剩余15秒”,并且从现在开始还没有倒计时。

timer.php:

<?php
if(true) {
    $countdownEnd = strtotime("-15 seconds");
    $countdownStart = strtotime("now");
    $timeLeft = $countdownEnd - $countdownStart;

    if(isset($_POST["type"]) === true && $_POST["type"] == "timerupdate") {
        echo ($timeLeft);
    }
}
?>

timer.js:

$(function() {
    var timerText = $("[timer]");

    setInterval(function() {
        $.post("timer.php", {type : "timerupdate"}, function(data){
            timerText.html(data + " seconds remaining")
        });
    }, 1000);
});

timer tests.php:

<!DOCTYPE HTML>
<html>
<head>
    <script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
    <script type="application/javascript" src="timer.js"></script>
    </head>
<body>
    <?php include("timer.php") ?>
    <p timer></p>
</body>
</html>

我希望输出是一个计时器,只要开始条件(timer.php开头的if语句)为真,它就会从15秒开始倒计时。

我们非常感谢您的帮助,谢谢:)

2 个答案:

答案 0 :(得分:0)

如果要在重新加载后保存计时器,则需要类似Cookie的会话。看看https://php.net/manual/en/function.session-start.php

//start a session and make sure there is no output before 
session_start();
//maybe you want to check for the requestmethod before you do additional checks
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  //your check for timerupdate.
  //you dont have to exact bool compare to true the isset it can only return true or false.
  if (isset($_POST["type"]) && $_POST["type"] == "timerupdate") {
    if (!isset($_SESSION['time'])) $timeLeft = 15;
    else $timeLeft = 15 - (time() - $_SESSION['time']);
    //output the timer or whatever you want
    if ($timeLeft < 0) echo 0;
    else echo $timeLeft;
  }
}

您必须在ajax调用中添加设置:withCredentials: true才能发送Cookie

答案 1 :(得分:0)

可以将日期功能与时间一起使用吗?