簡體   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