PHP 销毁 isset 上的会话



我试图在选择会话时销毁会话,但未销毁:

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']);
    }

最新更新