我正在构建自己的MVC框架,以便正确地学习。
我设法得到一个登录系统工作,但会话似乎不能在页面更改时持续。
我做了一些原因阅读,我在控制器中运行session_start()
,因为有些人似乎在指导。
在登录时,我的processLogin方法成功运行并按预期存储会话数据。我知道这已经发生了,因为我在主头文件中做了一个var_dump
,当登录表单加载时,它就在那里(我没有在任何时候破坏它)。
我遇到的麻烦是,当成功登录后要做位置更改时,它运行'gallery'方法,会话数组仍然存在,但为空。
真让人恼火,我真的很感激你的帮助。
这是我的扩展控制器类供参考:
session_start();
class Home extends Controller {
public function index() {
require 'application/views/_templates/header.php';
require 'application/views/home/index.php';
require 'application/views/_templates/footer.php';
}
// login function (validation carried out client side)
public function processLogin() {
if (isset($_POST['loginUsername'])) {
$home_model = $this->loadModel("HomeModel");
$home_model->processLogin($_POST['loginUsername'], $_POST['loginPassword']);
}
}
public function gallery() {
require 'application/views/_templates/header.php';
require 'application/views/home/gallery.php';
require 'application/views/_templates/footer.php';
}
}
首先你应该在主文件的开头使用session_start()
,通常是index.php
而不是控制器(因为我们不知道你的框架是如何构建的)。
你应该确保在你的网页的每一个地方你使用相同的域名-例如www。或者没有www。否则,您应该使用session_set_cookie_params()以其他方式设置它(例如所有子域)