如何记住非注册用户的选择?

时间:2012-12-19 13:28:37

标签: web choice

我的网站收集有关某些图片的用户评论。非注册用户可以单击“好”按钮。用户选择系统记住的最佳方法是什么?一个人只能点击一次“好”。饼干?会议?其他方式?

2 个答案:

答案 0 :(得分:1)

首先,您必须意识到所有会话技术都是基于的cookie。这都是很好的技巧。这意味着他们都有缺点,他们将无法在cookie不起作用的地方工作用户选择将被遗忘。在那些(希望很少见的)情况下,您可以将这些选项存储在URL中或作为CGI参数存储。在任何情况下,你都无法使它真正安全。

话虽如此,你需要权衡考虑。

缓存

如果您使用纯粹基于cookie的存储,那么您可以限制在单个域名下可以存储在Cookie中的用户选择数量。 RFC 6265 states some SHOULDs关于那些和与这些匹配的实现将给你最多200KB,这应该是足够的。较早的RFC 2965表示实现应该给你80KB。另请注意,浏览器会向您发送每个请求的Cookie到您的网站。这可能意味着您的用户浏览速度很慢。

假设24位图像ID(1600万个可能的图像),base64编码为4个字节,您可以将近20,000个选项打包到cookie中。对于32位图像ID,编码为6个字节,您仍然可以在cookie中获得超过10,000个选择。

当cookie证明过于繁琐时,可以说在1000票之后你可以将浏览器切换到会话技术......或者考虑一下如果没有注册就永远不会达到这个目的; - )

会话

如果您决定在会话中存储用户选择,则必须在服务器上专用一些存储区域。缺点是:

  1. 您无法安全地知道会话何时不再使用。因此,您需要一些机制来回收未使用的会话,通常是在固定数量的不活动之后到期,

  2. 如果要在多个HTTP服务器之间分配负载,则难以扩展。

答案 1 :(得分:0)

您创建一个唯一的“令牌”,您将其另存为cookie(例如IP +时间戳的哈希值)。该值也与投票一起保存到数据库中。