我正在尝试创建一个投票功能,用户可以在其中查看多个评论并对每个评论进行投票。每个投票按钮都是这样的,
<input type="button" value="UpVote93" id="upvote_55" onclick="upvote('commendID1')">
<input type="button" value="UpVote42" id="upvote_56" onclick="upvote('commendID2')">
upvote(param)函数是这样的ajax调用,
function upvote(x) {
$.ajax({
url: 'dbHandler.php',
type: 'post',
data: {
"action": 'UPVOTE_COMMENT',
"unique_answer_id": x
},
success: function(data){
alert(1);
},
failure: function(data){
alert(0);
},
complete: function(data) {
alert(2);
}
});
}
php更新语句如下所示,
$query = $conn->query("UPDATE answers SET vote_count = vote_count+1 WHERE commentID='$commentID' LIMIT 1>
问题是,用户可以将第二个按钮向上投票参数更改为"commentID1"。现在,当他单击第二个按钮时,mysql数据库中的两行将更新这两个注释,即commentID1和commentID2。
我在投票教程网站上尝试了同样的方法,并能够复制这个问题。然而,当我厌倦了Quora这样的网站时,这个bug就不存在了。实现此功能的最佳方法是什么?
您可以尝试将输入转换为html数组。PHP擅长阅读这些内容。类似于:
<input name="MyArray[]" />
<input name="MyArray[]" />
然后,您可以将输入读取为数组,并将其处理为数组。
你指的是用户可以多次投票支持评论吗?
-
如果你的用户必须登录,那么你可以很容易地将他们的用户id存储在数据库中的投票旁边,以确保他们每个评论只投票一次。
-
如果不需要登录,您可以将他们的IP地址存储在DB中,也可以将其保存在他们已经投票的会话(或可能是cookie)中。