PHP MVC - 会话不持久

时间:2014-07-20 13:34:29

标签: php templates session

我正在构建自己的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';
    }
}

1 个答案:

答案 0 :(得分:0)

首先,您应该在主文件的开头使用session_start(),通常是index.php,而不是在Controller中(因为我们不知道您的框架是如何构建的。

您应该确保网页中的任何地方都使用相同的域名 - 例如使用www。或没有www。否则,您应该使用session_set_cookie_params()以其他方式设置它(例如对于所有子域)