javascript - 当客户端修改两个按钮的 javascript 函数参数相同时,SQL/PHP 会更新多行

标签 javascript php ajax security mysqli

我正在尝试创建投票功能,用户可以在其中查看许多评论并对每个评论进行投票。每个投票按钮看起来像这样,

<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>

问题是,用户可以将第二个按钮的upvote参数更改为“commentID1”。现在,当他单击第二个按钮时,两条评论的 mysql 数据库中都会更新两行,即 commentID1 和 commentID2。

我在投票教程网站上尝试了同样的操作,并且能够复制该问题。然而,当我厌倦了像 Quora 这样的网站时,这个 bug 就不再存在了。实现此功能的最佳方法是什么?

最佳答案

您可以尝试将输入转换为 html 数组。 PHP 很擅长阅读这些内容。像这样的东西:

<input name="MyArray[]" /> 
<input name="MyArray[]" />

然后您可以将输入作为数组读取并像数组一样处理它。

关于javascript - 当客户端修改两个按钮的 javascript 函数参数相同时,SQL/PHP 会更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358718/

相关文章:

javascript - 用常量替换字符串来优化 Javascript 代码是否值得?

javascript - 没有 jquery 无法正确加载外部脚本

php - 地理距离搜索 MYSQL

javascript - 从 XHR 获取响应 Content-Type header

javascript - C# ListItemCollection 到 JSON,同时保留值和文本项

javascript - Stripe "Simple"Checkout - 检测关闭按钮是否被点击

javascript - 如何让测试用例显示在 Rally 纸板上?

php - 浏览的文件名未显示在文本框中

php - 使用左连接连接多个表

php - POST 500 内部服务器错误 - PHP