我正在開發一個投票網站,我只希望選民投票一次。這是一個3階段的過程。第一頁是選擇你想爲第二頁投票的人確認該人(隱藏的單選按鈕提交投票),第三頁是感謝頁面。我想檢查第一頁和第二頁上的cookie並在第三頁上寫入cookie。我希望cookie在第一次導航到網站後的兩天內過期。我想將已投票的人重定向到cookie.htm(與其他所有文件夾位於同一文件夾中)您將如何執行此操作?Javascript只投票一次Cookies
回答
我認爲它基於來自某個已知網站的電子郵件地址,並要求有人確認電子郵件地址可能是您最好的選擇。
我認爲你最好的選擇是有一個註冊過程並強制用戶登錄投票。正如評論中提到的,你需要一些服務器端的魔法。
問題是,它將被用於一次性使用,所以真的沒有使用/註冊/登錄的時間 – rn10950
那麼你不能保證用戶只會投一次。如果我清除了我的cookies,會怎樣? – simonlchilds
該網站將在iPhone上使用,除此之外,人口統計可能不知道如何清除cookie,更不用說知道它們是什麼。 – rn10950
要使用Javascript設置cookie,請將document.cookie
對象設置爲[cookiename]=[cookievalue];expires=[expirydate]
格式的字符串值。在這種情況下,似乎你只需要設置一個cookie,任何cookie,所以也許只是「完成=真」或其他。
// 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進一步info on cookies。
強制性免責聲明:很明顯 - 正如其他人指出的那樣 - 使用這種方法,用戶將能夠如果他們不在乎欺騙,因爲任何人都可以只明確自己的餅乾和繞過檢查。即使您認爲沒有人會打擾,只需在服務器上添加「完整性檢查」,並阻止任何投票次數超過X次的IP地址即可。
- 1. Mysql - 每天投票一次
- 2. 限制每個用戶只能投一次票(投票,Django的,蟒蛇)
- 3. 在投票系統上只允許每個人投一票
- 4. 驗證用戶投票的投票一次
- 5. cookie - 只投一次
- 6. Rails的JavaScript投票
- 7. 數字投票Javascript
- 8. 如何確保用戶每個帖子只能投票一次
- 9. Django的客人只能投票一次輪詢
- 10. 投票投票牆
- 11. 驗證該用戶只投一票
- 12. 從cookie中投票5次
- 13. PHP + Cookies:只顯示一次消息
- 14. 投票與長投票
- 15. 投票重複投票
- 16. 如何防止遊戲投票系統,人們可以每天投票一次?
- 17. Javascript投票和提交
- 18. 投票 - 票數與投票率?
- 19. 如何檢查選民投票過一次,直到下次選舉才能投下另一票?
- 20. 有沒有辦法在AngularJs中僅投一次或多次投票?
- 21. 基於投票投票的JQuery多個百分比投票
- 22. 評論與投票行爲投票
- 23. 使用asp.net和sql投票投票
- 24. AngularJS投票系統 - 防止多投票
- 25. 投票欄顯示沒有投票
- 26. 如何投票投票系統?
- 27. Django投票:按投票排序
- 28. 檢查用戶是否投票投票
- 29. 獨特的男女投票誰投票
- 30. 如何確保用戶只能在24小時內投票一次
很好。我想要一杯啤酒和一個漢堡包。問題是什麼? –
我建議你使用服務器端執行此任務(基於IP地址)。設置和閱讀不是很可靠,因爲用戶可以清除cookie並重新投票。 –
這將被用作我在學校舉行的歌唱比賽的iPhone調查。投票時間爲五分鐘。我只是想設法阻止人們再次投票。我無法做IP,因爲所有的iPhone/iPod Touch都會連接到相同的熱點(約500臺設備)。 – rn10950