PHP Ajax会等待函数完成,然后用户才能在服务器端再次调用它
我得到的是: 用户帐户上有100点积分。功能将从他的平衡中减去10分。然后,这10分将被另一个用户获得 问题是,如果用户将按钮垃圾邮件发送11次,那么另一个用户仍然会得到+10分,即使余额为0。这是因为函数一次执行多次 所以我基本上也有类似这个问题的问题,但我必须在服务器端处理它。 示例代码:PHP Ajax会等待函数完成,然后用户才能在服务器端再次调用它,php,ajax,Php,Ajax,我得到的是: 用户帐户上有100点积分。功能将从他的平衡中减去10分。然后,这10分将被另一个用户获得 问题是,如果用户将按钮垃圾邮件发送11次,那么另一个用户仍然会得到+10分,即使余额为0。这是因为函数一次执行多次 所以我基本上也有类似这个问题的问题,但我必须在服务器端处理它。 示例代码: function subtract() { $.ajax({ type: 'POST', url: 'verify.php', data: {
function subtract() {
$.ajax({
type: 'POST',
url: 'verify.php',
data: {
'token':token
},
complete: function(r) {
var success = r.responseText;
}
});
}
verify.php
$getCurrentBalance; //Points from Database
$subtract = $getCurrentBalance - 10;
updateBalance(); //Update the users balance with subtracted Points
所以一切都很好,但是,如果在用户可以再次调用之前函数已经完成,我必须检查服务器端。 您可以认为它更像是一个注释,但我强烈指出,对于客户端解决方案的建议不应该是解决问题的好方法,因为客户端不能也不应该被信任。
解决此问题的一种方法是在交易进行时“锁定”帐户。锁可以由布尔值组成;例如,true表示解锁,false表示锁定。锁本身应该在数据库表中。通过编程,您可以使用css“停用”按钮。这样,您就可以涵盖外观和功能。您可以发布
updateBalance()的内容吗代码>?@david$database->getReference('users/'.$uid./points')->set($subtract)代码>该函数可以工作,但我必须找到一种方法防止用户多次调用它times@IncredibleHat我想到了,但这是客户端还是非客户端?为什么不在单击时禁用按钮,然后在ajax完成时再次启用if?您还可以在之前将验证放在sql中updating@Miggy这不也是客户端的吗?我的意思是,如果用户想通过控制台再次启用按钮,他可以?@难以置信你是认真的吗?在中,我非常清楚地表明,我需要它是服务器端的。