如何编写一个只允许每位用户每天点击一次的按钮?

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

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

您可以设置用户点击按钮后的cookie,该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;
}

Aravind Sivam 先于我。 I did it in 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();
    }
});

按钮编码之外
首先,您需要了解这需要在后端进行一些工作,只需在浏览器上使用 JavaScript,只需删除 cookie 或更改 JavaScript 代码即可轻松调整您实施的解决方案:

这些是初学者的一些选择:

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

现在如果用户不需要注册,您只需使用用户的 IP 地址作为标识符进行会话。

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

现在,如果您不关心每位用户的点击次数或唯一点击次数,则无需完成上述所有工作。

希望对您有所帮助!