用PHP+MYSQL4.X 做发卡系统如何防止重复发放?

正常情况下还好,有时网络很慢,用户频繁刷新浏览器时,有一点小几率重复发卡(本来发2张导致数据库里标记了4张),虽然可以通过后续操作修正,但有没有比较好的方案不出现重复发生?
现在的情况是为了防止这种情况,已经是在取卡的页面用AJAX请求返回卡,这样都还是会有重复


我觉得这跟mysql事务没关系,楼主说了是刷浏览器,但是频繁的刷页面应该不会出现此类问题,除非——刷的太快太快了,我认为正常的人为操作是不太可能导致的,即使网速慢。


建议楼主说清楚点业务逻辑,我现在只能猜测是用户刷一下,出一张卡,用户刷了四次,出了四张卡,只是有两张因为网速慢,用户没有看到,所以实际上用户所得是两张,但是数据并没有混乱。如果是这样的话,可以这样解决:
设定一个时间间隔,比如5分钟内只能给单用户发一张
用户点击发卡(假设是getcard.php),程序发卡,然后跳转到卡片管理页面(假设是managecard.php),此时的管理页面必定显示有刚才所发的那张卡,此时如果用户刷新,刷新的只是卡片管理页面,而非发卡请求页面。(但是如果用户网速慢到在getcard.php就刷新了,那就只好用上个解决方案)


不知道我对问题的理解是否正确。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值