2011-09-15 35 views
0

我想确保您只能点击赞成或拇指向下每个表项?如何正确实施大拇指向上/向下动作?

我的访客没有登录,所以我的假设是,我可以检查您的IP,并使用JSON发送信息到数据库以记录IP地址和该表条目的ID。那么如果用户再次点击竖起大拇指,使用JSON做一个快速的SQL存在来确定IP和文本ID是否存在。如果没有,那么竖起大拇指点击就会通过。

看起来像这样是一个单调乏味的,非优雅的解决方案,速度会很慢,会占用大量的数据库空间。任何想法/帮助改善?

使用ruby 1.9.2,rails 3.1,jquery。

+0

您的解决方案听起来像是实现此目标的最佳方法... – Nayish

+0

基于IP的解决方案的问题是公司等人通常共享一个IP。当我们试图以这种方式阻止用户并且必须阻止用户时,我们遇到了这个问题。也许去IP地址+用户代理组合或什么的。 –

回答

0

对于NAT路由器(例如任何办公室或商业组织)后面的任何用户,使用IP地址作为用户标识符将是有问题的,因为这些都将被识别为相同的用户。

在这种情况下,客户端上的Cookie可能会更准确,但这也不是100%可靠,因为用户可以清除Cookie或可能已完全禁用Cookie。

这是一个设计问题,而不是技术问题;跟踪用户状态的根本问题是无法识别用户。但如果您希望为用户提供与用户交互的便利而无需登录,这是一种妥协。

0

我的这种功能的实现是很类似于你:

  • 如果一个按钮用户点击,通过JavaScript禁用它,并发送一个AJAX请求到服务器
  • 在你的数据库不添加一个新的列到您的数据库。最好添加一个存储IP,投票(上或下)和ID参考的新表格。这将有助于您保留表格,并且在未来更改投票系统会更容易。
  • 当您从PHP绘制页面时,如果用户之前投票过,请考虑投票并绘制按钮(上下)。

正如迈克尔指出的,在某些情况下,纯IP方法还不够好。也许你可以通过添加其他浏览器特定的变量来强制你的系统,但这取决于你需要的安全程度(因为用户可以使用两个不同的浏览器投票两次)。你会发现更多关于这个here的信息。

我希望这对你有意义。