2009-05-19 38 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地址

相关问题