未完全删除PHP会话

未完全删除PHP会话,php,ajax,session,Php,Ajax,Session,我在删除我在登录网站时创建的php会话时遇到了一些问题。首先,我试图破坏上述会话: 在index.php页面上有一个注销按钮,如果某些php代码检测到存在会话,则会显示该按钮。它调用此Ajax get调用: function logout() { var UName = "<?php echo $_SESSION['Username']; ?>"; //alert(UName);

我在删除我在登录网站时创建的php会话时遇到了一些问题。首先,我试图破坏上述会话:

在index.php页面上有一个注销按钮,如果某些php代码检测到存在会话,则会显示该按钮。它调用此Ajax get调用:

        function logout()
        {
            var UName = "<?php echo $_SESSION['Username']; ?>";

            //alert(UName);

            $.ajax(
            {
                url: "php/logout.php",
                type: "get",
                success: function(jsonstr)
                {
                    onSuccess(jsonstr);
                },
                error: function(XMLHttpRequest, textStatus, errorThrown)
                { 
                    alert("Status: " + textStatus);
                    alert("Error: " + errorThrown); 
                }   
            });
        }
现在,问题来了。每当我从管理页面调用以下代码片段时,session_status()函数总是返回值2,session_active

<?php else :?>
        <div class="row">
            <div class="col-xs-12">
                <div class="panel panel-default">
                    <div class="panel-heading">
                            Protected Page! <?php echo session_status(); ?> 
                    </div>

第二次重新加载(如果可以称之为重新加载)发生在我转到管理页面时,因为当列为管理员的人未登录时,我没有直接链接到该页面(该链接无论如何不会显示在index.php页面上),为了到达该页面,我只需直接在地址栏中键入url。session_status()即使在我关闭Waterbox并重新打开后仍返回2。

使用session_destroy()后,会销毁并删除会话cookie。并且会话不再存储在服务器上。$\u SESSION中的值可能仍然可用,但不会在下一页加载时使用


更多讨论。

在我的头撞到墙上一天半之后,我决定从头开始重新构建我的会话管理系统,因为它的实现方式导致了我无法解决的问题。

您应该使用它从
$\u会话中删除值

if(isset($_SESSION)) {
    unset($_SESSION);
    session_destroy();
}

如果不直接进入地址栏,就无法找到我在原始帖子中引用的管理页面的可能副本。这是否构成页面重新加载?如果是这样,那么会话值由于某种原因而保留。我也会在通知用户他们已经在索引页面上注销后直接重新加载页面。我尝试了所有我能找到的关于这个主题的东西,包括这个,但都没有成功。对于会话或至少根据会话状态(),服务器上的某个位置始终存在数据延迟。它永远不会返回1,始终是2,无论我如何尝试破坏会话并删除变量。@Geowil您是否尝试在登录的特定元素上使用
unset
?比如
unset($_SESSION['login'])
<?php else :?>
        <div class="row">
            <div class="col-xs-12">
                <div class="panel panel-default">
                    <div class="panel-heading">
                            Protected Page! <?php echo session_status(); ?> 
                    </div>
else if (rD[0] === "loggedout")
{
    if (rD[1] === "true")
    {
        alert("You have now been logged out.  The page will now reload.  Please come again!");

        window.location.reload();
    }

    else
    {   
        document.getElementById("errpanel").style.visibility = "visible";
        document.getElementById("errmsg").textContent = rD[2];
    }
}
if(isset($_SESSION)) {
    unset($_SESSION);
    session_destroy();
}