我有一个mysql表...
'用户'使用uname(字符串)作为主键。 '的帖子'以id为主键。
'帖子'有一个专栏 - '投票'
当用户登录时,他可以投票。问题是如何阻止他多次投票?
链接:(注意:$ q是帖子的ID)
<a href='./vote.php?upid=".$q."'>Upvote</a>
PHP:
if(isset($_GET["upid"])) {
$plus = $_GET["upid"];
$query = "UPDATE posts SET votes = votes + 1 WHERE id='$plus'";
$result = mysqli_query($dbc, $query) or die('Error querying database!');
}
答案 0 :(得分:0)
采取两个步骤:
Onclick将链接的样式设置为display:none
。或者使用jQuery hide()
。 (UX友好)(PHP:在未来页面加载时,如果用户已投票,则不显示链接。)
在您的数据库中,将操作保存在一个新的/单独的表中,只有在userid和postid的唯一组合时才允许INSERT。然后,您可以利用该表计算帖子ID的总票数。
P.S。通过使用唯一的帖子ID和用户ID存储个人投票,您还可以允许用户撤消他们的投票。
答案 1 :(得分:0)
你是否记录了谁被投票了?如果是这样,你可以围绕上行投票链接做一个if语句,只有在没有投票的情况下才能显示链接?
这是最好的方式,我可以想到这样做,虽然你可以存储cookie /会话数据,但很明显它们很容易被绕过。 编辑:为了清楚起见,我说你不应该出于安全原因使用会话/ cookie数据,但是正如mickmackusa在评论中提到的那样,使用会话会因为越来越多的帖子而变得非常臃肿得到了投票。