【发布时间】:2014-09-21 18:50:51
【问题描述】:
我使用 Javascript 和 PHP 构建了一个简单的游戏。一旦用户达到目标分数,他们就可以将他们的名字添加到高分 mysql 数据库中。我正在使用 PHP POST 来获取他们的分数并将其添加到 mysql。
在某人获得高分并输入他们的姓名后,它会将分数变量重置为零,并将他们重定向回带有 header('location') 的主游戏页面。如果他们按一次后退按钮,一切都很好,这表明他们的分数为零,因为我重置了变量。但是,如果他们两次点击后退按钮,就会显示他们的高分,他们可以再次输入他们的名字,并用他们的名字淹没高分数据库。
无论如何要防止这种情况发生?
【问题讨论】:
-
添加一些服务器端验证来验证高分是否已经提交。
-
@JimL 好的,谢谢,您可以指出的任何参考资料都可能详细说明如何做到这一点?
-
在一个正在玩的游戏的会话中创建一个unique id。当他们提交分数时,请连同它一起提交唯一 ID,然后生成一个新 ID。如果他们再次尝试提交,请检查提交的 id 是否未被使用。
-
谢谢@Doctus 我喜欢这个想法,并会试一试。我正在考虑在每个会话中在 php 中生成一个随机 sha1 哈希?
-
如果您每次生成一个 sha1 哈希,您仍然必须生成与哈希不同的东西并希望没有冲突。如果您使用 uniqid 函数,它会将结果字符串基于当前时间,因此重复的可能性要小得多
标签: javascript php mysql