执行在午夜重置投票cookie的函数

Execute function which resets vote cookie at midnight

本文关键字:cookie 函数 午夜 执行      更新时间:2023-09-26

我正在建立一个网站,在某个时候人们可以投票赞成或反对,他们可能每天只做一次。我在网上找到了一个脚本,允许用户只投票一次,它有一个按钮来重置cookie,这样用户就可以再次投票。我想投票,按钮的功能,午夜后重置。下面是html中按钮激活的javascript代码。它是关于。ld-btn-reset部分的,它会进行重置,所以我希望这个部分在午夜被激活。

    run : function()
{
    var s = '';
    s += "<div class='ld-bar-like'></div>";
    s += "<div class='ld-bar-dislike'></div>";
    s += "<div class='ld-clear-both'></div>";
    $( this.domobj ).find( '.ld-stats-bar' ).html( s );
    var _this = this;
    $( this.domobj ).find( '.ld-btn-like' ).click( function(e){
        e.preventDefault();
        _this.vote( $(this), 'likes' );
    });
    $( this.domobj ).find( '.ld-btn-dislike' ).click( function(e){
        e.preventDefault();
        _this.vote( $(this), 'dislikes' );
    });

    $( this.domobj ).find( '.ld-btn-reset' ).click( function(e){
        e.preventDefault();
        var key = _this.getCookieName();
        Cookie.del( key );
        alert( 'Cookie has been reset!' );
    });
    this.send( '' );
},

如果你不关心人们通过清除cookie来"欺骗系统",那么你应该在设置cookie的时候控制它的过期日期,而不是试图重置它。

var currentDate = new Date();
var expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0);
$.cookie("vote", "5", {expires: expirationDate});

这将取当前日期,加1天,并将日期设置为0:00

要在下面的注释中引用示例代码,可以使用以下命令:

var currentDate = new Date();
var expirationDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+1, 0, 0, 0);
var expires = "; expires=" + expirationDate.toGMTString(); 
document.cookie = name + "=" + value + expires + "; path=/";

更详细地解释流程:

  1. 我们设置currentDate为当前时间和日期
  2. 我们通过从当前年,月和日建立一个日期来设置新的截止日期,然后我们加1(使其成为明天早上的午夜)
  3. 我们将"expires"字符串设置为";expires="然后将截止日期转换为GMT日期字符串
  4. 你可以设置你的cookie名称,值和新的过期时间

你的旧代码基本上是在当前日期和时间上添加24小时