我正在构建自己的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';
}
}
答案 0 :(得分:0)
首先,您应该在主文件的开头使用session_start()
,通常是index.php
,而不是在Controller中(因为我们不知道您的框架是如何构建的。
您应该确保网页中的任何地方都使用相同的域名 - 例如使用www。或没有www。否则,您应该使用session_set_cookie_params()以其他方式设置它(例如对于所有子域)