我拥有的是:
用户帐户上有100点。该功能将从他的余额中减去10点。然后,这10点将转到另一个用户。
问题在于,如果用户向该按钮发送11次垃圾邮件,即使余额为0,另一个用户仍然获得+10分。这是因为该函数一次执行了多次。
所以我基本上有和这个问题一样的问题,但是我必须在服务器端处理它。 Wait for function to finish before starting again
示例代码:
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
所以一切正常,但是我必须在服务器端检查功能是否已完成,然后用户才能再次调用它。
答案 0 :(得分:2)
您可以认为它更像是一条评论,但我强烈希望指出,建议客户端解决方案不应是解决问题的好方法,因为客户端不能也不应该被信任。
解决该问题的一种方法可能是在进行交易时“锁定”帐户。锁可以由布尔值组成;例如,对于未锁定,为true;对于锁定为false。锁本身应位于数据库表本身中。从您的编程中,您可以使用CSS“禁用”按钮。这样一来,您既可以涵盖外观又可以涵盖功能。