评级系统:在db或cookies中存储用户名/ ip?

时间:2011-01-23 21:50:56

标签: php mysql

我正在创建一个简单的拇指向上/向下评级系统。用户可以简单地向上或向下单击,拇指向上/向下的总数存储在db中。我不希望用户能够多次投票但是,我不想存储用户的IP地址或用户名以检查它是否已经投票,因为我认为这将是非常混乱在数据库中。我很困惑,如果我可以使用一些替代方法(例如在cookie中存储用户名和项目名称,这样它至少可以防止一段时间。 如果在db中存储(用户名,项目ID)是好方法还是存储在浏览器cookie中,请告诉我?感谢。

3 个答案:

答案 0 :(得分:3)

如果您想阻止来自同一用户的多次投票,那么您别无选择,只能将其投票状态存储在您的服务器上,客户端上的任何内容都可以进行编辑。

您指的是用户名,表示用户拥有帐户。如果是这种情况,那么您可以将项目ID和用户ID存储在表格中,并使用它来阻止任何后续投票,隐藏投票选项或显示用户当前的投票状态。

如果用户没有帐户,您只需存储IP地址。然而值得一提的是,IP不能唯一地识别单个人/ pc。例如,从办公室上网的1000多人中的任何一人都将使用相同的面向互联网的IP地址。

答案 1 :(得分:0)

由于可以简单地剔除/编辑cookie,因此您需要使用数据库来强制执行此操作,并强制每个用户在投票前登录。 (听起来你已经通过使用术语“用户名”这样做了。)可悲的是,IP地址目前用于以可靠的方式唯一识别用户并不多。

此外,在数据库“投票”表模式中,您应该有一个唯一的密钥,以确保每个“父”对象上每个用户只能有一个投票。

答案 2 :(得分:-1)

数据库通常会更安全。