我试图在选择会话时销毁会话,但未销毁:
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']
这就是我完全摧毁我唯一的会话的方式:
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();
也许它可以帮助您针对特定会话调整代码。
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();
销毁活动会话,并且由于您的规范,以下内容会创建一个新会话。
您的代码似乎没问题,问题可能来自您的浏览器。
确保会话已启动。 如果它仍未销毁,请关闭浏览器并重新启动 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警报,如果会话未unset
则显示"会话仍然具有值:值",如果确实已unset
则显示"会话已取消设置"
希望这有帮助
试试这个...
if(isset($_SESSION['secondary_cat'])&&!empty($_SESSION['secondary_cat'])){
unset($_SESSION['secondary_cat']);
}