PHP服务器选项和投票系统

时间:2012-04-21 17:39:12

标签: php vote-up-buttons

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

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

我的想法是在用户投票时创建会话ID,然后再尝试再次投票以尝试比较会话ID是否已存在。这可以工作,但只有在会话被销毁之前。有没有人对如何实现这一点有任何其他想法?

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

提前致谢

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  

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

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

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


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

答案 2 :(得分:-1)

当您为特定文章插入评论时,请存储该成员(正在评论)的ID或名称或任何独特的内容。在插入评论之前插入验证码....

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或Cookie检查点不可靠,因为ISP更改了IP(如果设置为动态IP),访问者可以清除Cookie

希望这有助于你