我是PHP的初学者,我试图在按下按钮时制作一些东西来获取xp。你只需要点击它就会给出xp,然后刷新页面以刷新播放器在屏幕上的统计数据。
<form method="post">
<p><input type="submit" value="Kill the mob" name="add20xp" /></p>
</form>
<?php
if (isset($_POST['add20xp']))
{
$add20xp =("UPDATE users SET exp = (exp + 20)");
$execadd20xp = mysqli_query($connection, $add20xp);
echo '<meta http-equiv="refresh" content="0.1" />';
}
?>
问题是,我想阻止用户粉碎按钮以防止错误和类似的事情......我试图放入睡眠(1)但我可以继续发送垃圾邮件,等待秒,它可以工作所以它是不太有用。 谢谢你的帮助!
答案 0 :(得分:0)
如果要在提交表单后禁用该按钮3秒,您可以使用:
if(sessionStogare.getItem('submitted') === true){
document.querySelector('input[type="submit"]').disabled = true;
setTimeout(function(){
document.querySelector('input[type="submit"]').disabled = false;
sessionStorage.removeItem("submitted");
}, 3000);
}
document.querySelector("body").onclick = function() {
sessionStorage.setItem("submitted", true);
};
我们将在sessionStorage中注明提交并检查每次加载页面时是否已提交表单。然后,我们将禁用该按钮并在3秒后启用它。
答案 1 :(得分:0)
保存上次在会话状态下完成更新的时间。然后,只允许按下按钮(上次+ 2秒)(选择两秒,因为这是原始问题中的建议间隔)。
ColumnC
正如@Martin在他的评论中所指出的那样,你只想对按下按钮的用户进行更新,这就是评论的含义&#34;修复此行。&#34;
答案 2 :(得分:0)
将您的php
页面更改为:
// the beginning of the page:
<?php
// start a SESSION
session_start();
// setup a $_SESSION variable
if (!isset($_SESSION["timestamp"]))
$_SESSION["timestamp"] = 0;
//
// now put the $_POST part
if (isset($_POST['add20xp'])) {
// check the time
$now = time();
if ($now - $_SESSION["timestamp"] > 2) {
// more than 2 seconds have passed since last $_POST
// update the time
$_SESSION["timestamp"] = time();
//
$add20xp =("UPDATE users SET exp = (exp + 20)");
$execadd20xp = mysqli_query($connection, $add20xp);
//
echo '<meta http-equiv="refresh" content="0.1" />';
exit;
} else {
// nothing, just let the page load like it is.
}
}
?>
请注意一些重要的变化:
meta
标记重新加载页面 - &gt;因为数据已经存在
更新