如何对每个用户每天只允许单击一次的按钮进行编码

How to code a button that permits only one click per user per day?

本文关键字:一次 按钮 编码 单击 用户 每天 许单击      更新时间:2023-09-26

在这个网站:theanimalrescuesite.com中有一个按钮,每天可以点击一次。所以我的问题是如何在我的网站上制作一个类似的按钮(我不是说像设计)。每当有人在我的网站上,如果他早些时候点击向他展示广告,例如,如果他没有点击向他显示按钮。有人知道如何编码这个吗?

您可以在用户单击按钮后设置cookie,该按钮将在一天内过期,因此根据cookie,您可以找到用户是否单击按钮的位置,然后您可以启用或禁用按钮。

设置cookie

function createCookie(name, value, days) {
    var date, expires;
    if (days) {
        date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    } else {
        expires = "";
    }
    document.cookie = name+"="+value+expires+"; path=/";
}

阅读cookie

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

除了编码按钮
首先,你需要明白,这需要在后台做一些工作,浏览器上只有JavaScript,你实现的解决方案将很容易通过删除cookie或更改JavaScript代码来调整:

以下是一些初学者的选择:

  1. 使用cookie:当用户第一次点击按钮时,只需在浏览器中添加一个cookie,然后检查cookie是否存在以禁用按钮
    此解决方案效率低下,原因是:只需删除cookie即可享受无限点击
  2. 使用会话:您在后端启动用户会话,如果单击按钮需要注册,那么您只需在数据库中使用用户数据创建一个会话,在用户模型上设置一个字段,指示用户今天是否已经单击,然后根据用户模型中的值禁用/启用按钮
    你还需要检查一下你的点击量,您检查发送单击的用户的状态,这是因为人们可以篡改你浏览器上的JavaScript并发送即使禁用该按钮,也会单击
    这个解决方案(基于我的浅见)是最优的,因为它考虑了所有因素(同样根据我所知)

现在,如果用户不需要注册,只需使用用户的IP地址作为标识符创建一个会话。

可能有更简单的方法,但我不知道任何:D

现在,如果你不关心每个用户的点击次数或唯一点击,那么你就不需要做上面的所有工作

希望这能有所帮助!

Aravind Sivam打败了我。我在jQuery中做到了。两个例子,一个会在点击后禁用按钮一天,另一个会隐藏它。(注意,用户可以通过禁用JavaScript轻松绕过这一点。)

$(document).ready(function () {
    $("button").click(function () {
        var $this = $(this);
        if ($this.is(".example-1")) {
            $.cookie("button1", 1, {
                expires: 1
            });
            $this.prop("disabled", true);
        } else {
            $.cookie("button2", 1, {
                expires: 1
            });
            $this.hide();
        }
    });
    if ($.cookie("button1")) {
        $(".example-1").prop("disabled", true);
    }
    if ($.cookie("button2")) {
        $(".example-2").hide();
    }
});