繁体   English   中英

Php内部js条件

[英]Php inside js condition

我在 js 条件下使用 php 功能进行 js 倒计时。 除了重新加载页面时 php 功能仍然运行之外,一切都很好。

var countDownDate = new Date("2020/04/25 16:15:25").getTime();
var x = setInterval(function() {
    var now = new Date().getTime();
    var distance = countDownDate - now;
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    document.getElementById("demo").innerHTML = hours + "h " + minutes + "m " + seconds + "s ";
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "SESSION EXPIRED";
        <?php block_user(2); ?>
        document.getElementById("demo2").innerHTML = "User 2 blocked";
    }
}, 1000);

如果 block_user(2) 实际上阻塞了数据库中的用户,那么它似乎是在第一个页面加载时执行的。 PHP 将在页面加载时执行。 它不会被推迟到 javascript 中的条件。 如果您的 function 阻止您多次阻止用户,这就是如果您重新加载页面它不起作用的原因。 您必须对 PHP 脚本进行一些异步调用。

if (distance < 0) {
  clearInterval(x);
  document.getElementById("demo").innerHTML = "SESSION EXPIRED";

  $.post("block_user.php", {user_id:2}).done(function (response) {console.log(response);});

  document.getElementById("demo2").innerHTML = "User 2 blocked";
}

然后 block_user.php 会在 $_POST['user_id'] 中查找 user_id 并执行 block_user($_POST['user_id']);

这是一个简化的解决方案,它不考虑安全性或清理您的帖子变量,但它是解决您的问题的开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM