2009-05-19 62 views
0

在投票站點,用戶(未登錄)只能對問題投票一次。網絡應用程序如何「記住」用戶已經回答了一個特定的問題?在Web應用程序中實現「記住」多個值的最佳方式

一種方法是爲她所回答的每個問題設置一個cookie。另一種在會話中保存問題ID的方法。我們也可以將該值與會話ID一起存儲在數據庫中。

有沒有其他方法可以做到這一點?

回答

0

取決於您需要記住多長時間。

該cookie解決方案不適用於不接受cookie的客戶。

只要會話處於活動狀態,即可在會話中保存已回答的問題ID,但會話失效或超時時會丟失內存。

將已回答的問題ID保存在數據庫中是最長壽命和最可靠的。我建議你不要保存會話ID,因爲它沒有意義。顯示問題何時得到解答的時間戳以及答案可能更爲恰當。

0

我建議使用cookie,因爲您可以將其保留在用戶計算機上,除非轉到另一臺計算機,刪除它們的cookie或切換瀏覽器它將在那裏。由於您沒有登錄,因此這是跟蹤特定用戶的最簡單方式。如果您嘗試用戶會話,那麼他們的會話信息即將過期,他們可能會返回並再次投票。

+0

Cookie聽起來像是最簡單的方法。但是我爲每個問題創建一個cookie嗎?如果用戶回答50個問題,我是否需要創建50個Cookie? – user85748 2009-05-19 23:10:42

+1

基本上,cookie的值只是一個字符串,因此您可以輕鬆存儲分隔的值列表。 – DanSingerman 2009-05-19 23:19:23

1

您也可以嘗試按用戶IP進行操作。含義保存回答問題的IP地址。使用會話的問題是用戶可以隨時清除緩存/ Cookie,然後直接返回到您的網站並再次投票。他們也可以欺騙他們的IP地址,但這至少稍微難一些。存儲在會話和數據庫中的組合是IMO最簡單(最簡單)的方式。

+0

多個用戶可以使用一個IP,或者一個會話可以跨越多個IP,所以通常IP地址對於這類事情來說是無用的。 – DanSingerman 2009-05-19 23:09:52

+0

同意這不是100%萬無一失,但會議更是如此。 – Gandalf 2009-05-19 23:19:53

0

您可以將他們的答案在XML文件中保存在服務器上(每個用戶/ ip /?一個)。在開始新會話時,您仍需要進行某種身份驗證或將用戶鏈接到其現有文件的方式。

希望這有助於

比爾

+0

與將答案保存在數據庫中不一樣嗎?我傾向於使用數據庫而不是XMLs – user85748 2009-05-19 23:13:56

0

是否有任何其他方式做到這一點?

不,至少沒有好的方法。

+0

-1:沒有幫助。 – 2009-05-19 23:24:20

0

如果我使用cookies,shd我將每個問題ID(和答案)保存在一個單獨的cookie中?這將意味着很多餅乾,對吧?說如果用戶回答50或100個問題,這將是很多餅乾?這個可以嗎?

0

我在polldaddy檢查過。我清除了會話和cookies,它仍然記得我的選擇。看起來他們正在使用IP地址

相關問題