【问题标题】:how to allow only one vote for a rating system如何只允许对评级系统投一票
【发布时间】:2012-10-10 01:42:06
【问题描述】:

伙计们,我制作了一个基于 jquery 和 css 的星级评分系统。现在我真的想不出如何将用户投票保存到数据库。最重要的是如何限制一个用户只能投一票。

由于该网站的访问者数量巨大,我无法将每个用户的 ip 保存到数据库中。此外,我认为它效果不佳,因为即使我的 IP 地址本身也是动态的。每次我断开并重新连接我的互联网时,我的 ip 都会改变,我可以再次投票。所以我认为这行不通。

这就是我考虑将选票保存到数据库的想法: 我只保存页面收到的投票数,不保存页面的总评分。

并且将评分与投票数分开。所以它会给我平均评分。对吗?

但我想不出办法将一位用户限制为一票。请帮忙。

【问题讨论】:

  • 可以在投票时使用cookies并设置一个cookie(有权限)吗?
  • 如果只存储一个ip地址已经很昂贵了,你将找不到任何可靠的解决方案。
  • 这种方法对您来说可能听起来很愚蠢,它只允许您网站的成员进行评分。
  • @KyleHudson 我想到了,但想不出如何存储用户投票的所有页面的信息。
  • @MaSK 您可以在 cookie/会话中存储多维数组。如果您真的担心几千行,那么您可能需要研究数据库优化。我运行一个包含大约 20,000,000 行(innodb 和 myisam 的混合)的 saas 应用程序。

标签: php rating-system


【解决方案1】:

似乎没有切实可行的方法来严格执行网络上每人一票。

在计算机网络上,我们经常使用人的代理。其中一些是

  • 网络或应用程序登录,
  • 电子邮件地址,
  • IP 地址,
  • cookies,

等等。但是每人一票,这些都有问题。

  • 对于web 登录,一个人通常可以创建多个帐户。 (特别是如果他们是免费的。)
  • 电子邮件帐户是免费的,许多(大多数?)人现在拥有多个电子邮件帐户。
  • IP 地址可能有效,但仅适用于具有非共享计算机的 Intranet(每台计算机使用一个 IP 地址)(公司政策是每台计算机一人)。
  • Cookie 与 Web 登录存在相同的问题。 (并且它们可以被用户删除。)

如果一个投票真的很有价值,有些人会很麻烦地投票两次。但大多数选票都不是很有价值。

【讨论】:

    【解决方案2】:

    研究使用索引来构建数据库。我创建了一个用户最喜欢的系统,它只允许每个用户/最喜欢的组合插入一行。例如:用户选择了一个收藏夹,数据库中存储的值为用户ID和收藏夹ID。如果用户尝试再次选择它,数据库将不会插入该行,因为它是完全重复的。

    【讨论】:

    • 哦,我有,这正是我所拥有的。这是一个最喜欢的系统。但我需要一个评分系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多