2

在我的应用程序中,用户可以发布他/她的文章,其他用户可以在投票时做出回应,就像 stackoverflow 对发布的问题和答案一样。

如何限制用户以使他/她不能投票两次?

4

4 回答 4

6

只需将用户 ID 存储在投票表中即可。
因此,您可以随时检查特定用户是否已经投票。
article-id, user-id, vote time 和 vote value 列就够了

于 2010-08-08T07:04:59.830 回答
4

两种方法:

  • 客户端:设置为cookie(最后5或10票的文章ID),不允许再次投票。这很容易破解,但允许您在不更改任何数据库的情况下实现!
  • 服务器端:在表格中跟踪每一个赞成票和反对票<{userID}, {vote UP/DOWN}, {articleID}>

StackOverflow 使用数据库来存储所有这些数据。他们还会在一段时间后锁定您的投票,因此您无法撤消您的操作。

于 2010-08-08T07:06:36.847 回答
2

我认为最好的方法是将所有投票和用户 ID 存储在数据库中,如果它变得更大,您可以在一周/一个月/等之后从数据库中删除旧记录,并限制对超过一周的项目进行投票/month/etc,因此没有人可以对同一项目进行两次投票。

于 2010-08-08T07:10:42.437 回答
1

您将需要使用某种服务器端脚本来通过 IP 或其他一些唯一数据来记住用户。您必须存储 IP 或其他数据并记住它。当用户再次尝试赞成/反对投票时,您必须检查是否应该让他们这样做。你应该让他们做相反的事情,以防他们想改变他们的投票。您可以使用 PHP 和 MySQL(以及许多其他东西)来做到这一点。

于 2010-08-08T07:03:04.047 回答