我已经读过几个问题,答案似乎与我的确切问题无关。我的项目正在使用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();
吗?每次都需要执行此操作,然后才能访问任何会话变量。