【问题标题】:how to stop people giving a thumbs up twice on a web page如何阻止人们在网页上竖起大拇指两次
【发布时间】:2012-12-17 15:13:59
【问题描述】:

我正在制作一个网站,即新闻/博客类网站,人们可以在其中将 cmets 留给所发布的帖子。然后登录的用户可以给评论一个大拇指向上或向下。在我单击拇指时它工作正常,它使用 ajax 将计数添加到数据库并更新数字,它还阻止该人再次单击拇指,但如果您按 f5 刷新页面,您可以再次单击大拇指。我怎样才能阻止这种情况发生? 将此添加到数据库是我正在考虑的一个选项,但是该站点需要能够处理大量 cmets 并且用户可能会对 cme​​ts 进行数千个拇指操作,因为它执行数据库表的简单操作在之后会很大很短的时间肯定会减慢页面加载速度,因为每次使用 cmets 查看页面时它都会查询一个非常长的表。

目前,我在评论表中保持竖起和向下的拇指数,因此它会查询 cmets 表并显示数字。如果有人竖起大拇指,您是否建议我添加一个包含用户 ID 和评论 ID 的新表,以便我可以查询该表,并且如果有一行用户 ID == 登录用户和评论 ID == 评论不允许?如果是这样,这就是我的想法,但正如我上面所说,它会导致一个巨大的表格,这肯定会减慢页面的加载速度

【问题讨论】:

  • 保留您正在使用的count,但也要存储执行thumb up 的用户,并确保不允许第二次。
  • 这是一个验证,在竖起大拇指/向下竖起大拇指时,您必须检查该用户是否已经投票,并相应地采取下一步......竖起大拇指..!!!!!!!!!
  • 是的,您需要将其添加到数据库中。如果不存储信息,您将无法跟踪它发生的事实!您已经在您的网站上允许 cmets。想想评论需要多少空间而不是竖起大拇指。是的,您的数据库可能会变大,但解决方案是拥有一个设计良好且功能强大的数据库以供您的网站使用!
  • 如果您所做的只是存储comment-iduser-id 的列表以竖起大拇指,这应该是一个相当快的数据库调用。您所要做的就是检查user-id 是否已经在那个表中,因为comment-id 已经...如果是这样,不要让他们
  • 如果您不想扩展您的数据库,您可以将这些信息保存在 cookie 中 - 不是很好(因为用户可以删除他们的 cookie),但是一个快速的解决方案

标签: php javascript html sql ajax


【解决方案1】:

一种方法是,当您加载 cmets 时,如果该用户已经对每个 cmets 进行了投票,则如果该用户已经投票,则禁用大拇指按钮。

【讨论】:

    【解决方案2】:

    您不应该将点击存储为简单的计数器,而是存储实际事件

    创建一个名为“clicklog”或其他名称的单独表,并添加诸如useridcommentidIsThumbsUp 之类的字段。然后在您的 ajax 页面中,您可以将赞许添加到此表(IsThumbsUp 是一个布尔值。true 表示赞许,false 表示不支持。

    那么你可以使用 SELECT comment, thumbsUp, thumbsDown 之类的东西,而不是使用

    SELECT id, comment,
           (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=1) AS thumbsUp,
           (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=0) AS thumbsDown
    FROM comments
    

    您还可以在您的 AJAX 页面中检查用户之前是否投票过。如果他有,不要允许。甚至更好。当他投票支持时,他可以将其更改为投票反对(将 IsThumbsUp 从 1 更改为 0)或反之亦然。

    只要确保每个用户只有一个带有 commentid 和 userid 的连接。

    还要确保在 clicklog 中的字段上放置索引,以便快速获取信息。我将主键放在 commentiduserid 组合上,然后在 commentidIsThumbsUp 组合上放置一个单独的索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多