PHP为什么$u会话变量拒绝在浏览器关闭时取消设置?

PHP为什么$u会话变量拒绝在浏览器关闭时取消设置?,php,session,unset,Php,Session,Unset,我对php比较陌生,但是我遇到了一个让我发疯的错误 我正在创建一个网页,让你浏览服务器上的文件 但是,由于某些原因,$\u会话变量会保持自身设置,即使在浏览器重新启动后 拜托,我求求你,在我发疯之前告诉我为什么会这样 这是我的代码: <html> <?php session_start(); if(!isset($_GET['location'])) { header('Location: ?location=G:'); session_unset(); } /

我对php比较陌生,但是我遇到了一个让我发疯的错误

我正在创建一个网页,让你浏览服务器上的文件

但是,由于某些原因,$\u会话变量会保持自身设置,即使在浏览器重新启动后

拜托,我求求你,在我发疯之前告诉我为什么会这样

这是我的代码:

<html>
<?php
session_start();
if(!isset($_GET['location'])) {
    header('Location: ?location=G:');
    session_unset();
}
/* THIS IS WHERE THE BUG OCCURS. THIS VARIABLE SHOULD BE EMPTY ON BROWSER OPEN!!!! ?!?!?!?! I HAVE ADDED NOTHING TO SESSION YET*/
var_dump($_SESSION);
if(!isset($_SESSION['path'])) {
                $_SESSION['path'] = array();
                $_SESSION['path'][0] = $_GET['location'];
            }
echo '<br><br><br><br><br><br>';
//* If user presses back and isn't in home folder, return to previous folder... *//
if(isset($_GET['back']) && $_GET['back'] == true && sizeof($_SESSION['path']) > 0) {
                unset($_SESSION['path'][sizeof($_SESSION['path'])-1]);
                $_GET['location'] = $_SESSION['path'][sizeof($_SESSION['path'])-1];
                header ('Location: ?back=false');
            } else {
                //*However if user hasn't pressed back make sure that session is properly updated with location *//
                if($_SESSION['path'][sizeof($_SESSION['path'])-1] != $_GET['location']) {
                    array_push($_SESSION['path'], $_GET['location']);
                }
            }
            //*Now build the link from the session path array*//
            $full_link = '';
            for($i = 0; $i < sizeof($_SESSION['path']); $i++) {
                $full_link .= $_SESSION['path'][$i];
                $full_link .= '/';
            }
            //*Get all files from link path*//
            $filesbrowsed = glob($full_link . '*');
?>
    <head>
        <meta charset "utf8">
        <title>File Browser</title>
        <link href="filebrowserstyle.css" rel="stylesheet" type="text/css">
    </head>
    <body>
        <header>
            <ul class = "navigation">
                <li><a href = "">Home</a></li>
                <li><a href = "?back=true">Back</a></li>
                <li><a href = ""></a></li>
                <li><a href = ""></a></li>
            </ul>
        </header>
        <div class = 'current_files'>
            <?php
            //* Now display all files in current path *//
            for($i = 0; $i < sizeof($filesbrowsed); $i++) {
                $filename = substr($filesbrowsed[$i], strlen($full_link), strlen($filesbrowsed[$i]) - strlen($full_link));
                echo '<div><a href = "?location=' . $filename . '/' . '">' . $filename . '</a></div>';
            }
            ?>
        </div>
    </body>
</html>

文件浏览器

提前谢谢大家

要删除会话中的所有数据:

$_SESSION = [];

在将用户重定向到其他位置之前,应先取消会话设置

<html>
<?php
session_start();
if(!isset($_GET['location'])) {
    session_unset();
    session_destroy();
    header('Location: ?location=G:');
}
/* THIS IS WHERE THE BUG OCCURS. THIS VARIABLE SHOULD BE EMPTY ON BROWSER OPEN!!!! ?!?!?!?! I HAVE ADDED NOTHING TO SESSION YET*/
var_dump($_SESSION);


请注意,如果我删除一大块脚本,$\u SESSION变量会像正常情况一样以空数组开始,并且在我的php.ini中,SESSION cookies time设置为0,因此问题出在脚本的某个地方。。。。但出于对我的爱,我想不出你为什么要避免用大写字母书写,因为它通常用来表示叫喊,让人觉得你很粗鲁。与此同时,这里有很多代码,不清楚其中哪一部分与你的实际问题有关。试着把问题归结为一个问题;目标是用最小的代码来演示问题,清楚地描述当前的行为以及您想要/期望的行为。您是否尝试过使用不同的浏览器?IIIRC如果您使用“在浏览器上还原我的上一个会话开始”之类的内容,则某些/所有浏览器仍保留您的cookie/会话我不希望每次用户刷新页面时会话都取消设置…但您希望在url中没有“位置”时使用它?坦率地说,这一行是不必要的。我只是在试验这个问题时把它放在那里了。主要的问题是,如果我刚刚打开浏览器,开始时的var_转储应该返回一个空数组,但它没有返回。不管我是否用一行代码将其取消设置。会话应按定义在浏览器关闭时取消设置。会话不会因为浏览器关闭而在服务器上过期。