[英]Session variable is not remaining set
基本上,我试图将会话变量设置为布尔值,以确保用户无法两次完成函数。
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
方法中发送的信息,然后基于一个get变量title来创建一个新的会话变量。 如果会话变量已经存在,则应将其设置为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;
}
}
由于某种原因,它总是说尚未设置会话变量,并在第一段代码中执行if语句的else if部分。
提前致谢。
在设置会话之前,您已经编写了die()
:
mysqli_query($connection, $sql);
$_SESSION['voted'] = true;
header("Location: /mi4.php");
die(); <--
$_SESSION[$title] = true;
}
}
您可以删除它,也可以在会话后放置它。 两种方式都不需要它,因为您没有对其进行任何操作。
只需复制并过去。 有用。
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']);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.