PHP在Desset上销毁会话

时间:2015-01-20 08:59:35

标签: php session

我正在尝试在选择会话时销毁一个会话,但它没有被销毁:

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']

4 个答案:

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