Javascript 只投票一次 cookie



我正在开发一个民意调查网站,我只希望选民投票一次。这是一个 3 阶段的过程。第一页是选择要投票的人,第二页是确认该人(隐藏的单选按钮提交投票),第三页是感谢页面。我想在第一页和第二页上检查饼干,并在第三页上写下饼干。我希望 cookie 在首次导航到网站后的两天内过期。我想将已经投票的人重定向到 cookie.htm(与其他所有内容位于同一文件夹中)你会怎么做?

我认为基于来自已知站点的电子邮件地址之类的东西,并要求有人确认电子邮件地址可能是您最好的选择。

我认为您最好的选择是进行注册过程并强制用户登录以进行投票。如评论中所述,您需要一些服务器端魔法。

要使用 Javascript 设置 cookie,请将 document.cookie 对象设置为格式为 [cookiename]=[cookievalue];expires=[expirydate] 的字符串值。 在这种情况下,似乎你只需要设置一个cookie,任何cookie,所以也许只是"done=true"或其他什么。

// get today's date plus 2 days
var expiration = new Date();
expiration.setDate(expiration.getDate() + 2);
// add cookie "done=true" with expiration
document.cookie="done=true;expires=" + expiration.toUTCString();

要检查 Cookie 是否已设置,请再次使用 document.cookie,这将返回所有 cookie 的分号分隔列表。 过滤它以找到您的:

var myCookie = document.cookie.split(';').filter(function(item) { 
    return item.split('=')[0] == 'done'; 
});

如果设置了cookie,那么您可以执行简单的重定向:

if (myCookie.length > 0) {
    window.location = "cookie.htm";
}

请参阅 MDN 以获取有关 cookie 的更多信息。


强制性免责声明:显然 - 正如其他人所指出的那样 - 使用这种方法,用户将能够作弊,如果他们愿意,因为任何人都可以清除他们的cookie并绕过检查。 即使您认为没有人会打扰,明智的做法是在服务器上添加"健全性检查",并阻止任何投票超过X次的IP地址。

最新更新