【问题标题】:PHP Server options and voting systemPHP 服务器选项和投票系统
【发布时间】:2012-05-02 22:27:09
【问题描述】:

我目前正在创建一个网站,该网站允许匿名用户将数据(或 cmets)输入数据库,并允许该网站的其他匿名用户投票赞成或反对网站上显示的 cmets。

我已经创建了允许用户创建评论并允许其他用户对评论投票的功能。我遇到的问题是我想如何限制网站的每个访问者只对每条评论投票一次。

我的想法是在用户投票时创建一个会话 ID,然后当他们再次尝试投票以尝试比较会话 ID 是否已经存在时。这将有效,但仅在会话被破坏之前有效。有没有人对如何实现这一点有任何其他想法?

我假设我可以使用一些可用的 $_SERVER 选项

提前致谢

【问题讨论】:

  • 我假设你已经尝试了一些东西?试图控制“匿名”几乎是不可能的。 IP 是共享的,会话是临时的,cookie 可以删除。
  • 当我说匿名时,我只是说我没有获得有关用户的信息,因此无法识别一个用户和另一个用户(即通过登录)
  • 我知道你的意思,但归结为:没有唯一标识符,没有唯一限制。

标签: php vote-up-buttons


【解决方案1】:

在匿名用户系统上执行一票政策是不可能的。就像上面评论中所说的:

试图控制“匿名”几乎是不可能的。 IP是共享的, 会话是临时的,可以删除 cookie

您无法 100% 识别您的客户,如果用户愿意,他将能够绕过您尝试使用的任何方式并多次投票。

您唯一可靠的选择是强制注册并且只允许注册用户投票。


如果您仍然坚持,您可以尝试让用户难以绕过您的强制系统。使用用户的 IP 地址和持久 cookie 的组合,并对两者进行交叉验证,以确保用户不会投票两次。但同样,请注意,用户可以轻松删除 cookie,并且在大多数情况下,更改他的 IP 地址。

【讨论】:

  • 幸运的是,这只是一个小网站,所以我认为这就足够了,而且如果他们真的努力更改 IP 和删除 cookie,那么也许他们应该能够投票两次 :) 谢谢
【解决方案2】:

当您为特定文章插入 cmets 时,存储成员(评论者)的 ID 或名称或任何唯一的东西。插入cmets前先放验证码....

Select * from articles where member_commented_id = [current_member_id_from_querystring) and article_id = member_commented_on_article_id

//a check point
if result is > 0 .. its mean member already has commented on this article

//otherwise
add comments on article and insert member id as well for checking

// if you are using seperate table for comments then you have to make additional field in table like

comment_id, comment, com_date, member_id_who_commented, article_id_on_which_commented

设置 IP 或 Cookies 检查点不可靠,因为 IP 由 ISP 更改(如果设置为动态 IP)并且 Cookies 可以被访问者清除

希望对你有帮助

【讨论】:

  • 欢迎来到 Stack Overflow!请正确格式化您的代码。通过在任何代码行之前缩进 4 个空格来插入代码块。这次我已经为您格式化了代码,但请下次正确格式化。如需更多帮助,请参阅Editing FAQ
【解决方案3】:

只需使用 IP 或 Cookie 限制投票,我还创建了 3 个网站,我必须在其中进行公开投票,之前我使用 IP 进行过,但后来我改回 cookie,我还保存了 IP 以及设置 cookie检查用户是否一次又一次地删除cookie进行投票,但我从来没有遇到过这样的问题,所以我的意见只是使用cookie,因为不是每个人都能发现我们正在使用cookie。

【讨论】:

  • 是吗?我可以更改我的 IP 并删除 cookie。我已经在许多网站上这样做了一百万次。永远不要相信你的用户!
  • 幸运的是,这只是一个小网站,所以我认为这就足够了,而且如果他们真的努力更改 IP 和删除 cookie,那么也许他们应该能够投票两次 :) 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
相关资源
最近更新 更多