В основном я пытаюсь установить переменную сеанса как логическую, чтобы гарантировать, что пользователь не сможет выполнить функцию дважды.Переменная сеанса не остается
session_start()
if(isset($_GET['vote'], $_GET['title'], $_GET['user']))
{
if(isset($_SESSION[$_GET['title']]))
{
$_SESSION[$_GET['title']] = true;
}
else if(!isset($_SESSION[$_GET['title']]))
{
$_SESSION[$_GET['title']] = false;
add_title_vote($_GET['title'], $_GET['vote'], $_GET['user']);
}
}
Этот код должен принимать информацию, которая была послана в методе get
, а затем на основе одной переменной получить, название, новая переменная создается новая сессия. Если переменная сеанса уже существует, она должна установить переменную true
. Если переменная не существовала, переменной сеанса присваивается значение false и вызывается функция, зависящая от значения переменной сеанса. Функция вызывается только в том случае, если переменная сеанса равна false
.
функция вызывается, если переменная сеанса false
:
function add_title_vote($title, $vote, $user)
{
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Assignments";
$connection = new mysqli($servername, $username, $password, $dbname);
if($_SESSION[$title] == false)
{
if($vote === 'up')
{
$sql = "UPDATE `mi4` SET `relevance` = `relevance` + 1 WHERE `title`='$title'";
$servername1 = "localhost";
$username1 = "root";
$password1 = "";
$dbname1 = "Users";
$connection1 = new mysqli($servername1, $username1, $password1, $dbname1);
mysqli_query($connection1, "UPDATE `login` SET `score` = `score` + 1 WHERE `user` = '$user'");
}
else if ($vote === 'down' && $votedown[$title] == false)
{
$sql = "UPDATE `mi4` SET `relevance` = `relevance` - 1 WHERE `title`='$title'";
$servername1 = "localhost";
$username1 = "root";
$password1 = "";
$dbname1 = "Users";
$connection1 = new mysqli($servername1, $username1, $password1, $dbname1);
mysqli_query($connection1, "UPDATE `login` SET `score` = `score` - 1 WHERE `user` = '$user'");
}
mysqli_query($connection, $sql);
$_SESSION['voted'] = true;
header("Location: /mi4.php");
die();
$_SESSION[$title] = true;
}
}
По какой-то причине он всегда говорит, что переменная сессии не была установлена, и выполняет еще, если часть, если заявление в первом фрагменте кода.
Заранее спасибо.
У вас есть 'session_start()' перед тем, как вы начнете ссылаться на сессии vars? Должен присутствовать во всех скриптах, создающих ссылки на сеанс var. –
Да, 'session_start()' находится в коде выше того, что дано. – user2594218
'$ _SESSIONS' не является суперглобальной переменной, но вы, кажется, относитесь к ней как к одному. Вы хотите '$ _SESSION'. –