我想阻止用户多次投票

时间:2015-11-05 15:12:01

标签: php database voting-system

我有一个PHP代码投票我想阻止用户投票两次。我想检查用户是否已投票,并阻止他们再次投票。 这是我的代码:

<?php
  include('conn.php');
  $expire = 24*3600*30; //after one day
  setcookie('SnugglesVotingSystem'.$_POST['id'], 'voted', time() + $expire, '/');     // Place a cookie
  if($_POST) 
  {
    try{
    $query = "UPDATE tbl_images SET up =up".$_POST['value']." WHERE      id=".$_POST['id'].""; // Update number with +1 or -1
       // Prepare statement
    $stmt = $DB->prepare($query);
    // execute the query
    $stmt->execute();
    // echo a message to say the UPDATE succeeded
    echo $stmt->rowCount();
    }
    catch(PDOException $e)
    {
    echo $query . "<br>" . $e->getMessage();
    }
    $value = "SELECT up FROM tbl_images WHERE id=".$_POST['id'].""; // Get the new number value
    $stmt = $DB->prepare($value);
            $stmt->execute();
            $images = $stmt->fetchAll();
    if (is_array($value) && isset($_POST['up'])) {

    echo $value['up'];
}
    //echo $value['up']; // Send back the new number value
}
?>

1 个答案:

答案 0 :(得分:1)

您需要在数据库中保存某种标志,以确定此用户是否已为此图像投票。不是仅保留图像的总投票数,而是为每个投票在新的image_votes表中插入一条新记录。该记录只包含user_id和image_id。然后,您可以计算任何一个用户的投票或图像的投票,并且您可以轻松地在此表上执行SELECT以查看用户是否已经投票,然后通知他们他们无法再次投票或为他们插入行。