我有一个用JavaScript编写的游戏,它基本上做的是启动一个十秒计时器并记录用户在计时器过去之前能够点击某个按钮的次数。
代码的工作原理:
当用户点击按钮时,使用push
函数将元素添加到数组中,然后使用不同的函数返回数组的长度作为单击的次数。
问题:
如果用户打开开发工具并更改每次单击将元素添加到数组的次数,这将更改结果的结果。
我的方法:
我决定做的是在运行push
函数之前以及运行push
函数之后存储长度,然后比较它们的差异以及它是否大于{ {1}},这意味着某些事情是不对的。这似乎在我脑海中起作用,直到我在代码中写下来并发现如果用户在检查差异之前多次推动,那么它将被忽视。请大脑子们帮帮我。
我的代码:
1
完全打破此问题的代码:
$('body').on('click', '.btn.z', function () {
// start listening
startCountingClicks()
})
var timerStarted = false;
var tc = [];
function startCountingClicks () {
$('.btn.z').html('ClickZed');
$('.Score').html('Your Score: '+gettc()+" clicks");
if (timerStarted == false) {
startTimer(10, $('#time'));
}
// user does multiple push before this function: startCountingClicks is called
var previous_length = tc.length; // get length before push
tc.push(1);
var new_length = tc.length; // get length after push
if (new_length - previous_length !== 1) {
console.log("fraud"); // this is supposed to catch a thief!!!
}
console.log(new_length+" "+previous_length);
timerStarted = true;
}
function gettc (){
// get number of clicks
return tc.length ;
}
修改
我不希望防范开发工具,但如果它有效,我不反对该方法。我只想更好地计算点击次数,这种方法可以通过在开发工具上编写代码来影响。
答案 0 :(得分:2)
你无法阻止人们在客户端做事。试图防止这种情况毫无意义。您可以做的最好的事情是确保发送的内容符合您在服务器端的预期。