我正在尝试在选择会话时销毁一个会话,但它没有被销毁:
if (isset($_POST['primary_cat'])) {
$_SESSION['primary_cat'] = $_POST['primary_cat'];
unset($_SESSION['secondary_cat']);
}elseif(empty($_SESSION['primary_cat'])) {//define primary_cat
$_SESSION['primary_cat'] = null;
}
当我更改$_POST['primary_cat']
时,这已更改,但$_SESSION['secondary_cat']
未被销毁。我该如何销毁$_SESSION['secondary_cat']
答案 0 :(得分:0)
这就是我完全破坏我唯一的会话的方式:
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000, $params["path"],$params["domain"], $params["secure"], $params["httponly"]);
echo " Zerstöre Cookie... ";
}
@session_unset();
@session_destroy();
也许它可以帮助您根据特定会话调整代码。
答案 1 :(得分:0)
if (isset($_POST['primary_cat'])) {
$_SESSION['primary_cat'] = $_POST['primary_cat'];
unset($_SESSION['secondary_cat']);
} elseif (empty($_SESSION['primary_cat'])) {//define primary_cat
$_SESSION['primary_cat'] = null;
}
你应该尝试这些:
if (isset($_POST['primary_cat'])) {
session_destroy();
$_SESSION['primary_cat'] = $_POST['primary_cat'];
} else if (!$_SESSION['primary_cat']) {
//your business
}
对此的解释是单击或选择
"primary_cat"
它应运行该代码块,否则它将不会运行该代码,如果是,则为
session_destroy();
销毁活动会话,根据您的规范,下面会创建一个新会话。
答案 2 :(得分:-1)
您的代码似乎没问题,问题可能来自您的浏览器。
确保会话已启动。如果它仍然没有被销毁,那么关闭浏览器并重新启动apache。
但请确保您没有在其他地方设置$_SESSION['secondary_cat']
。
确保在取消设置$_SESSION['secondary_cat']
if(isset($_SESSION['secondary_cat'])){
echo '<script type="text/javascript">alert("the session still has value : '.$_SESSION['secondary_cat'].'");</script>';
}
else
echo '<script type="text/javascript">alert("session has been unset");</script>';
上面会显示一个javascript警告,显示&#34;会话仍有值:thevalue&#34;如果会话不是unset
或&#34;会话未被设置&#34;如果真的是unset
希望这会有所帮助
答案 3 :(得分:-2)
试试这个......
if(isset($_SESSION['secondary_cat'])&&!empty($_SESSION['secondary_cat'])){
unset($_SESSION['secondary_cat']);
}