PHP 会话不持久(MVC,不使用 Javascript)


PHP Session not persisting (MVC, not using Javascript)

我已经读过几个问题,答案似乎与我的确切问题无关。我的项目正在使用MVC模式和引导程序。Index.php 调用 Controller.php 中的 invoke() 函数,该函数又根据操作包含我的观点。

我的登录按钮执行以下操作:

case "login":
            $name = $_POST['name']; $pass = $_POST['password'];;
            $result = $this->model->loginUser($name,$pass);
            if($result == 1){
                session_start();
                $_SESSION["username"]=$name;
                $_SESSION["lang"]="";
                include 'view/session.php';
            }
            else{
                include 'view/login.php';
            }
            break;

它可以访问 $_SESSION["用户名"] 变量,我用来说欢迎。

会话和登录 PHP 文件包含在引导导航栏中。登录用户可以访问更多选项,例如下载文件和查看其个人资料。尝试单击配置文件或下载按钮后,我设置的方式与登录按钮相同,显然具有不同的值:

<form class="navbar-form" method="POST" action="index.php">
    <button type="submit" class="btn btn-success" name="action" value="login"><?php echo LOGIN_TXT; ?></button>
</form>

在"配置文件"操作中,它执行以下操作:

case "profile":
            include 'view/session.php';
            include 'view/profile.php';
            break;

不确定这种方式是否可行,但我试图通过"层"来实现它。会话和登录是导航栏层,正文由配置文件或下载等视图组成。

这里的问题是,当再次调用会话视图时,它不再有权访问变量,返回以下内容:

Welcome, Notice: Undefined variable: _SESSION in /(...)/mvc/view/session.php on line 44

什么可能会使会话死亡?我在这里不知所措。

我将如何继续使用 Javascript 甚至 Ajax 来使我的会话持久化?这可能吗?

它是在叫session_start();吗?每次都需要执行此操作,然后才能访问任何会话变量。