0

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

4

3 回答 3

0

要使用 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";
}

有关cookie的更多信息,请参阅 MDN 。


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

于 2012-11-17T10:25:29.730 回答
0

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

于 2012-11-16T23:44:44.523 回答
0

我认为你最好的选择是有一个注册过程并强制用户登录投票。正如评论中提到的,你需要一些服务器端的魔法。

于 2012-11-16T23:44:56.903 回答