为了账号安全,请及时绑定邮箱和手机立即绑定

我如何不断检查 php 中的 if 语句?

我如何不断检查 php 中的 if 语句?

PHP
郎朗坤 2022-10-28 09:40:35
我有一个 php if 语句来检查服务器时间,如果是某个小时它运行一个 jquery 函数。问题是它只在页面加载时被触发一次。我知道如何使用 javascript,但我需要 if 语句是 php,因为我需要检查服务器时间,而不是用户浏览器的当前时间。我想像每 10 秒检查一次这样的东西是理想的footer.php 中的代码:<?phpdate_default_timezone_set('Europe/Rome'); // CET$info = getdate();$hour = $info['hours'];if ($hour >= 8 && $hour <= 22){ ?>    <script type="text/javascript">    jQuery(document).ready(function(){            document.getElementById("myid").innerHTML = "OPEN";            document.getElementById("myid").setAttribute("class", "open");    });    </script><?php }else{ ?>    <script type="text/javascript">    jQuery(document).ready(function(){            document.getElementById("myid").innerHTML = "CLOSED";            document.getElementById("myid").setAttribute("class", "closed");    });    </script><?php } ?>
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

您的 PHP 代码在页面加载时执行一次。只有当 PHP 完成后,生成的 HTML 和 Javascript 才会发送到浏览器,以便您的访问者可以看到一些东西。


如果您想在用户访问您的网站时定期检查某些内容,那是 Javascript 而不是 PHP 的工作。由于您需要检查服务器时间而不是用户的本地时间,因此最好的办法是使用 Ajax 每隔一段时间调用一个 PHP 脚本。


根据您想要做什么来判断,您真正需要知道的只是服务器认为的时间。我个人更喜欢这类 PHP 脚本来输出 JSON,主要是因为 Javascript 可以很容易地处理它,所以像这样一个简单的 PHP 脚本就足够了:


<?php

header('Content-Type: application/json');


date_default_timezone_set('Europe/Rome');

$info = getdate();

$hour = $info['hours'];

echo json_encode(['hour' => $hour]);

这将根据服务器输出一个包含当前时间的 JSON 对象,例如:{"hour":21}


您可以使用 jQuery 相对简单地使用它。将其包装在 asetInterval中以使其定期运行。你每 10 秒提到一次,所以这就是我将用于此示例的内容:


<script>

setInterval(function() {

    // change "/server_time.php" to point to wherever you put that PHP script above

    jQuery.getJSON("/server_time.php", function(data) {

        if (data.hour >= 8 && data.hour <= 22) {

            document.getElementById("myid").innerHTML = "OPEN";

            document.getElementById("myid").setAttribute("class", "open");

        } else {

            document.getElementById("myid").innerHTML = "CLOSED";

            document.getElementById("myid").setAttribute("class", "closed");

        }

    });

}, 10000);

</script>

快速免责声明:我没有测试这段代码,所以 YMMV。看起来它应该可以工作,但我并不打算为您完全解决您的问题,而是指出解决方法。


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信