【问题标题】:Storing multiple binary values in a cookie在 cookie 中存储多个二进制值
【发布时间】:2010-11-29 05:31:43
【问题描述】:

我的网站上有很多投票,我想防止用户多次重新投票。据我所知,我既可以保留访问者的 IP 日志,也可以存储 cookie。我尝试使用 IP 登录到 mySQL 数据库,但有一个问题:路由器后面的所有访问者都具有相同的外部 IP,因此只有路由器后面的一个人可以对某个投票进行投票。

因此,除非有更好的解决方案,否则我现在将我的代码切换为使用 cookie。由于最终会有数百或数千个民意调查,并且我认为有 20 个 cookie 限制,我如何存储每个民意调查的值?这些值可以只是二进制值,例如 poll1=0 如果还没有投票,poll1=1 如果投票。

此外,如果有帮助,每次投票都会立即使用 jquery 显示结果。我假设我可以在 jquery resonse 中设置/修改 cookie。

有什么想法吗?谢谢! (顺便说一句,我知道 cookie 可以删除)

【问题讨论】:

  • 最后一句话让整个问题变得荒谬。
  • 用户是指匿名用户?还是?
  • 弹片:民意调查对于完全防止多重投票并不那么重要。如果用户想经历禁用 cookie 或删除 cookie 的麻烦,那么我会让他们多次投票。 ajreal:我希望用户保持匿名。无需登录或注册

标签: php jquery html cookies


【解决方案1】:

如果你真的想限制per-user,你需要实现用户识别,这意味着你需要用户注册、登录和会话管理。有了它,就一点都不难了。只需在用户记录和投票记录之间实现多对多关系,并在用户进行投票时创建加入记录并检查以确定他们是否已经参与投票。

试图对用户的活动实施限制而不实施真正识别用户的方法永远不会奏效。

【讨论】:

  • 投票不够重要,无法 100% 限制重复投票。我只是想要一个小型的预防系统,让用户在正常情况下只能投票一次。我不希望用户必须在网站上注册一个帐户。虽然这样,但我知道如果用户付出努力,他们可以绕过重复投票。
【解决方案2】:

即使您可能有数百个投票,但可以合理地预期每个用户只会投票其中的几个。因此,您可以只拥有一个 cookie,其中包含用户已投票的投票 ID 的逗号分隔列表。

当然,cookie 不提供任何形式的保护,因为它们可以被删除或篡改,但它们也是存储此类信息的唯一实用方法,并且在大多数情况下都能正常工作。

【讨论】:

  • 也许使用记录的 ip 和 cookie 的组合?
  • 感谢 cacablanca,这可能行得通。我可能会用逗号分隔已投票的投票数,例如 14,238,728,235,38,382 等...你知道如果我超过 4KB cookie 限制会发生什么吗?
  • @Cody:我不确定极限会发生什么,我想它取决于浏览器。但是再一次,您可以轻松地在 4KB 中存储 500-1000 甚至更多的值,而且单个用户不太可能投票这么多。
猜你喜欢
  • 2010-11-13
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多