如何向php脚本发送多个快速post请求
我在codeigniter中有一个控制器,由Ajax从UI调用,在UI的正常操作中,一切都很好,这就是脚本中发生的事情,这只是一个演示代码,不是真实的(只是想展示发生了什么): 在2个正常的UI调用中(每个调用后1秒):如何向php脚本发送多个快速post请求,php,ajax,.htaccess,codeigniter,security,Php,Ajax,.htaccess,Codeigniter,Security,我在codeigniter中有一个控制器,由Ajax从UI调用,在UI的正常操作中,一切都很好,这就是脚本中发生的事情,这只是一个演示代码,不是真实的(只是想展示发生了什么): 在2个正常的UI调用中(每个调用后1秒): 在第一次调用中,$bank['amount']是1000(例如)。增加了 到用户的余额,并设置为0 在第二次调用中,$bank['amount']是0,因为它在上一次调用中被设置为0 调用,因此余额中没有添加任何内容 但是,一些垃圾邮件发送者/黑客使用一些机器人或其他任何东
- 在第一次调用中,$bank['amount']是1000(例如)。增加了 到用户的余额,并设置为0
- 在第二次调用中,$bank['amount']是0,因为它在上一次调用中被设置为0 调用,因此余额中没有添加任何内容
- 在第一次调用中,$bank['amount']是1000(例如)。增加了 到用户的余额,并设置为0
- 在第二次调用中,$bank['amount']不是0,因为第一次调用仍在工作,并且没有将$bank['amount']设置为0,因为在第二次调用之前没有足够的时间
你有什么方法来防止这种快速呼叫吗?例如,限制用户在每次通话之间有1s的间隔?使用您选择的一些锁定 一些可能性(还有更多的可能性):
这就是数据库事务的用途。。。
$uid=$_POST['uid'];
$id=$_POST['id'];
$bank=load_bank($uid,$id); // Load Bank From MySql DB
add_to_user_balance($uid,$bank['amount']); // "Add" the bank's amount to user balance in DB
zero_bank_amount($uid,$id); // Reset the bank amount to zero