Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web applications 实施'的最佳方式;记住';web应用程序中的多个值_Web Applications_Cookies - Fatal编程技术网

Web applications 实施'的最佳方式;记住';web应用程序中的多个值

Web applications 实施'的最佳方式;记住';web应用程序中的多个值,web-applications,cookies,Web Applications,Cookies,在投票网站中,用户(未登录)只能对问题投票一次。web应用程序如何“记住”用户已经回答了特定的问题 一种方法是为她回答的每个问题设置一个cookie。在会话中保存问题id的另一种方法。我们还可以将该值与会话id一起存储在db中 还有别的办法吗 取决于你需要记住多长时间 cookie解决方案不适用于不接受cookie的客户 只要会话处于活动状态,在会话中保存已回答的问题ID就可以正常工作,但当会话无效或超时时,就会丢失内存 将已回答的问题ID保存在数据库中是最持久和可靠的方法。我建议您不要保存会话

在投票网站中,用户(未登录)只能对问题投票一次。web应用程序如何“记住”用户已经回答了特定的问题

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


还有别的办法吗

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

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

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


将已回答的问题ID保存在数据库中是最持久和可靠的方法。我建议您不要保存会话ID,因为它没有意义。显示问题回答时间和答案的时间戳可能更为贴切。

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

您也可以尝试使用用户IP进行投票。意思是保存回答问题的IP地址。使用会话的问题在于,用户总是可以清除缓存/cookie,然后立即返回您的站点并再次投票。他们也可以欺骗自己的IP地址,但这至少有点困难。在我看来,将会话和数据库中的存储结合起来是最简单(也是最简单)的方法。

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

希望这有帮助

账单

还有别的办法吗


没有。至少肯定没有好办法。

如果我使用cookie,我会将每个问题ID(和答案)保存在一个单独的cookie中吗?那就意味着很多饼干,对吗?比如说,如果用户回答了50或100个问题,那将是大量的cookie?这样可以吗?

我在波莉爸爸那里查过了。我清除了会话和cookies,它仍然记得我的选择。看起来他们正在使用IP地址

多个用户可以使用一个IP,或者一个会话可以跨多个IP,因此一般来说,IP地址对于这类事情来说是非常无用的。同意这不是100%万无一失,但会话更不是如此。Cookie听起来是最简单的方法。但我是否为每个问题都创建了一个cookie?如果用户回答了50个问题,我需要创建50个cookie吗?实际上cookie的值只是一个字符串,因此您可以轻松地存储一个带分隔符的值列表。这与将答案保存在数据库中不一样吗?我更喜欢处理DBs而不是上面的XMLSA,实际上cookie的值只是一个字符串,因此您可以轻松地存储表示问题的值的分隔列表。(哦,在这里为你的问题添加澄清,而不是在下面添加答案,这是一种很好的礼仪)对不起,我没有意识到:-(带分隔符的值应该可以很好地工作它们不是(它不记得我在同一台机器上对两个浏览器的投票)+1,删除了否决票,你是对的,没有100%的简单方法。