У меня есть 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
}
?>
Вам нужно сохранить какой-нибудь флаг в вашей базе данных, чтобы определить, голосовал ли уже этот пользователь за это изображение. Вместо того, чтобы сохранять общее количество голосов за изображение, вставьте новую запись в новую таблицу image_votes для каждого голоса. Запись будет содержать только user_id и image_id. Затем вы можете подсчитать голоса любого пользователя или голоса изображения, и вы можете легко выполнить ВЫБОР для этой таблицы, чтобы увидеть, проголосовал ли уже пользователь, а затем уведомить его, что он не может проголосовать снова или вставить для него строку.
Других решений пока нет …