在Web应用程序中实现“记住”多个值的最佳方法

时间:2009-05-19 22:59:15

标签: web-applications cookies

在投票站点中,用户(未登录)只能对问题进行一次投票。网络应用如何“记住”用户已经回答了某个特定问题?

一种方法是为她回答的每个问题设置一个cookie。另一种在会话中保存问题ID的方法。我们还可以将值与会话ID一起存储在数据库中。

还有其他办法吗?

7 个答案:

答案 0 :(得分:1)

您也可以尝试通过用户IP执行此操作。意思是保存回答问题的IP地址。使用会话的问题是用户可以随时清除其缓存/ cookie,然后立即返回您的站点并再次投票。他们也可以欺骗他们的IP地址,但这至少会稍微困难一些。存储在会话和数据库中的组合是IMO最简单(也是最简单)的方式。

答案 1 :(得分:0)

如果我使用cookies,请将每个问题ID(和答案)保存在一个单独的cookie中?这意味着很多饼干,对吧?如果用户回答50或100个问题,那将是很多饼干?这样好吗?

答案 2 :(得分:0)

我在polldaddy检查过。我清理了会话和cookie,它仍然记得我的选择。看起来他们正在使用IP地址

答案 3 :(得分:0)

取决于你需要记住多长时间。

Cookie解决方案不适用于不接受Cookie的客户。

只要会话处于活动状态,在会话中保存已回答的问题ID就可以正常工作,但是当会话失效或超时时会丢失内存。

将已回答的问题ID保存在数据库中是最长寿和最可靠的。我建议您不要保存会话ID,因为它没有意义。显示回答问题的时间戳以及答案可能更为恰当。

答案 4 :(得分:0)

我建议使用Cookie,因为您可以将其保留在用户计算机上,除非转到另一台计算机,删除其Cookie或切换浏览器,否则它将存在。由于您没有登录,因此这是跟踪特定用户的最简单方法。如果您尝试使用会话,那么他们的会话信息将会过期,他们可以回来再次投票。

答案 5 :(得分:0)

您可以将他们的答案在XML文件中保存在服务器上(每个用户/ ip /?)。在开始新会话时,您仍需要进行某种身份验证或将用户链接到现有文件的方式。

希望这有帮助,

比尔

答案 6 :(得分:0)

  

还有其他办法吗?

没有。当然,至少没有好办法。