繁体   English   中英

如何防止用户影响按钮单击次数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM