[英]How to prevent users from affecting number of button clicked times
我有一个用JavaScript编写的游戏,它的基本作用是启动一个十秒钟的计时器,并在计时器过去之前注册用户能够单击某个按钮的次数。
代码的工作方式:
当用户单击按钮时,使用push
功能将元素添加到数组中,然后另一个函数将返回数组的长度作为单击的次数。
这个问题:
如果用户打开开发工具并更改每次单击将元素添加到数组的次数,则将改变结果。
我的方法:
我决定要做的是存储在我运行push
函数之前以及在我运行push
函数之后的长度,然后比较它们之间的差异,如果该差异大于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 ;
}
完全打破了这一点的代码:
$('button').click(function(){tc.push(1); tc.push(1)})
编辑:
我不希望针对开发工具提供保护,尽管如果可行,我也不反对这种方法。 我只是希望获得一种更好的计算点击次数的方法,这种方法不会受到在开发工具上编写代码的影响。
您不能真正阻止人们在客户端上做事。 试图阻止这种情况毫无意义。 最好的办法是确保所发送的内容与服务器端的期望值匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.