对于模糊的问题感到抱歉,这里发生了什么: 我将赠送" win code"对人民来说。我的django应用程序是这样写的,所以第一个在最后一次胜利后XX小时输入有效代码的应用程序将再次成为赢家。 如果用户是获胜者,他将被重定向到带有表格的页面以获得他的奖品。 1)用户输入代码 2)我检查最后一次胜利的日期时间 3)如果它再次成为赢家,请转到表单页面
问题是:如果有人获胜,然后另一个人在第一个填写表格之前输入代码来领取奖金,那么第二个人也将获得该表格,因为最后一个获胜者仍然超过XX几小时前。
我该如何避免这种情况?我可以以某种方式检查某人是否已将其制作成该表格吗?
答案 0 :(得分:0)
您必须创建某种锁定,指示价格当前已分配给用户,并阻止其他用户使用相同的表单。
您可以创建随机令牌,将其存储在DB(或redis)中,并将隐藏字段添加到表单中。我建议你也加一个到期日。
只要存在有效令牌,其他任何用户都无法访问该表单。当用户1提交表单时,您检查它是否包含有效令牌。
答案 1 :(得分:0)
其他方法是在第3步中立即写下最后一次赢取日期时间,所以
3)如果它再次成为赢家,请创建获胜记录并将其(或其他形式)提供给用户填写字段
如上所述,经过一段时间后,您可以查看/删除空赢的记录