Javascript仅投票一次Cookie

Javascript仅投票一次Cookie,javascript,cookies,mobile-safari,dreamweaver,vote,Javascript,Cookies,Mobile Safari,Dreamweaver,Vote,我正在开发一个投票网站,我只希望选民投票一次。这是一个三阶段的过程。第一个页面是选择要投票的人,第二个页面是确认person hidden单选按钮以提交投票,第三个页面是感谢页面。我想在第一页和第二页检查cookie,并在第三页写入cookie。我希望cookie在首次导航到该站点后的两天内过期。我想将已经投票的人重定向到cookie.htm,与其他人放在同一个文件夹中。你如何做到这一点?我认为,基于某个已知站点的电子邮件地址,并要求有人确认电子邮件地址可能是你最好的选择 我认为你最好的选择是有

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

我认为,基于某个已知站点的电子邮件地址,并要求有人确认电子邮件地址可能是你最好的选择

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

要使用Javascript设置cookie,请将document.cookie对象设置为[cookiename]=[cookievalue]格式的字符串值;expires=[ExpireyDate]。在本例中,您似乎只需要设置一个cookie,任何cookie,所以可能just 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并绕过检查。即使您认为没有人会打扰您,在服务器上添加一个健全性检查,并阻止任何投票次数超过X次的IP地址也是明智的。

这很好。我想要一杯啤酒和一个汉堡包。问题是什么?我建议您使用基于IP地址的服务器端来完成此任务。设置和阅读不是很可靠,因为用户可以清除cookie并再次投票。这将被用作我学校唱歌比赛的iPhone投票。投票时间为五分钟。我只是想阻止人们再次投票。我不能使用IP,因为所有的iPhone/iPod Touch都将连接到同一个热点,大约500台设备。问题是,它将用于一次性使用,因此注册/登录实际上没有任何用处/时间。那么,你不能保证用户只会投票一次。如果我清除我的cookie呢?该网站将在iPhone上使用,而且用户可能不知道如何清除cookie,更不用说知道它们是什么了。