PHP - 我希望用户不能多次投票

Posted

技术标签:

【中文标题】PHP - 我希望用户不能多次投票【英文标题】:PHP - I want the user to have no possibility to upvote more than one time 【发布时间】:2015-04-30 03:28:18 【问题描述】:

我正在使用 phpmysql 开发一个小型社交网络 我希望用户能够对帖子进行投票,我已经这样做了,但问题是我希望用户只能投票一次。

这是我的 PHP 代码:

if (isset($_POST['heart']))
 
  $identificateur = $_POST['hide'];
  $Q = "UPDATE posts  SET avis = avis + 1 where id=$identificateur ";
  $bdd->query($Q);

这是upvote按钮的形式:

<form action="p.php" method="POST">
        <label><?php 
        if ($avis != 0)
                    
                        echo $avis; 
                    
        ?></label>
        <input type="hidden" value="<?php echo "$id" ?>" name="hide">
        <input type="submit" value=" " id="heart" name="heart"> 
</form>

每个用户都应该只有一次点击赞成投票图标的权利。 非常感谢您。

【问题讨论】:

您必须有一个表格,其中包含用户条目及其对帖子的投票。 我的建议是,您需要创建一个新的数据库表来存储哪个人对哪个帖子进行了投票。 【参考方案1】:

您需要有第二个表,它有两个字段,post_idvoter_id。 (post_voter).post_id 有一个包含 post 表 id 的外键,voter_id 有用户表的外键。此表指定帖子的投票者和用户投票的帖子。当用户尝试对帖子进行投票时,您必须检查post_voter 表并获取post_id 等于帖子ID 和voter_id 等于用户ID 的行数。如果 count = 0,这意味着用户还没有对帖子进行投票,他现在可以投票给它。否则,用户已经为该帖子点赞,他无法再次点赞。

【讨论】:

以上是关于PHP - 我希望用户不能多次投票的主要内容,如果未能解决你的问题,请参考以下文章

PHP/MySQL:在投票系统中,如何防止用户看到他已经投票的个人资料?

NodeJs,处理用户投票的到期日期

PHP/SQL 投票和计算结果

Firestore - 访问安全规则中的事务/嵌套数据

php与Redis实现一个100万用户的投票项目,如何实现实时查看投票情况?

php与Redis实现一个100万用户的投票项目,如何实现实时查看投票情况?