gpt4 book ai didi

javascript - 如何在每天的特定时间自动对 PHP 脚本执行 AJAX 请求?

转载 作者:行者123 更新时间:2023-12-01 02:27:54 25 4
gpt4 key购买 nike

我尝试编写一段代码,每天 23:00 向此 URL { url: "addCredits.php"} 发出 AJAX 请求。在此 URL 中,存在用于使用 PHP 将 +5 添加到“Credit”列的 SQL 代码。我希望每个用户每天都能在“信用”栏中收到+5。

我尝试运行下面的代码,但在 23:00,用户没有收到任何积分。

<script>
function startTime() {

// set time variables h=hour, m=minute, s=second
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();

//check if 0's have to be added for better appearance. no logical use!
m = checkTime(m);
s = checkTime(s);

//display current time on the element with id="txt"
document.getElementById('txt').innerHTML =
h + ":" + m + ":" + s;

//check if its 23:00:00 ... if so call addCredits.php
if(h == 23 && m == 00 && s == 00) {
$.ajax({url: "addCredits.php"});
}

//restart this function every second to update the clock
var t = setTimeout(startTime, 1000);
}
function checkTime(i) {
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
</script>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<body onload="startTime()">

<div id="txt"></div>

</body>
</html>

最佳答案

我在这里发现了一些问题。

  1. 您确定您的用户确实拥有此页面并在 23:00:00 运行吗?显然,如果页面未打开,它将无法工作。

  2. getHours(等)给出用户本地时区的时间。不同时区的用户在不同时间会出现此条件。

  3. 您使用的条件 -- h == 23 && m == 00 && s == 00 -- 仅当计时器在 23:00 之间触发时才为 true: 00 和 23:00:01。由于您使用的是 1000 毫秒计时器,并且 JS 计时器不能保证在确切的请求时间间隔触发,因此如果计时器在 22:59 触发,某些用户可能最终会“跳过”条件: 59.99 和 23:00:01.00。

但最重要的是:为此使用客户端逻辑是完全不安全的。任何用户都可以随时请求 addCredits.php 任意多次;事实上,它通常是通过这个 Javascript 请求的,但这并不能阻止他们以其他方式运行它。如果您想定期向用户提供积分,请使用服务器端计划任务来执行此操作。

关于javascript - 如何在每天的特定时间自动对 PHP 脚本执行 AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com