Хранение и извлечение переменных _SESSION

Я работаю над function Это позволяет пользователю голосовать за пост не более одного раза. На странице несколько постов, поэтому мне нужно отслеживать, за какие посты проголосовал пользователь.

Я делаю это, сохраняя общую сумму голосов. Например, если пользователь голосует за сообщение, он должен удалить свой голос, проголосовав один раз, или поменять свой первоначальный голос на голосование вниз, проголосовав дважды.

При первом голосовании я инициализирую $_SESSION переменная к 0, Понижение голоса приводит к -1 и голосование принимает его 1,

Здесь PHP function для голосования «за» (функция «против» аналогична):

function upVote($post_id) {
global $databaseController;

if(!isset($_SESSION[$post_id])) {
$_SESSION[$post_id] = 0;
}

if($_SESSION[$post_id] <= 0) {
$sql = "SELECT likes FROM posts WHERE id='" . $post_id . "'";
$results = $databaseController->select($sql);

if($results && $results->num_rows == 1) {
$results = $results->fetch_assoc();

$new_likes = ++$results['likes'];

try {
$databaseController->startTransaction();

$sql = "UPDATE posts SET likes=" . $new_likes . " WHERE id=" . $post_id;
$databaseController->update($sql);

if($databaseController->commit()) {
$_SESSION[$post_id] = ++$_SESSION[$post_id];
return true;
}
} catch (Exception $e) {
$databaseController->rollback();
return false;
}
}
}
return false;
}

$_SESSION[$post_id] всегда сбрасывается на 0 каждый раз, когда вызывается функция, позволяющая пользователю голосовать столько раз, сколько он хочет.

Почему это происходит? Мне кажется, что переменная должна быть установлена ​​только в 0 если пользователь никогда не голосовал за сообщение, иначе он просто извлекает переменную, видит, что она существует, и изменяет ее.

Что-то не так с моей логикой? Или я не использую $_SESSION переменные в правильном пути?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]