1

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

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

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

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

提前致谢

4

3 回答 3

1

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

于 2012-04-21T18:15:34.753 回答
0

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

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

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

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


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

于 2012-04-21T18:34:39.857 回答
-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 或 Cookies 检查点是不可靠的,因为 IP 由 ISP 更改(如果设置为动态 IP)并且 Cookies 可以被访问者清除

希望这可以帮助你

于 2012-04-21T18:21:46.933 回答