【问题标题】:Cannot set session variables inside HMVC module using CodeIgniter无法使用 CodeIgniter 在 HMVC 模块中设置会话变量
【发布时间】:2016-05-15 03:56:58
【问题描述】:

我在使用带有 HMVC 扩展的 CI 3.0.3 时遇到了问题。 我想在用户成功登录时设置会话变量。所以我有 User.php 类来存储登录视图和输入验证。

if($this->form_validation->run() == true):

    // prep auth, session
    $login_data = Array(
        'table'  => 'users',
        'cred'   => Array(
            'username' => $_POST['username'],
            'password' => $_POST['password'],
            'user_active' => 1
        )
    );

    $try = modules::load('auth/login', $login_data);

当验证运行时,我将数据发送到 Auth 模块,以登录功能。 Login 方法运行 SQL 查询来验证用户输入,如果一切正确,Login 方法将用户详细信息发送到 set_login_session 方法:

验证/登录:

$user_details_from_db = $this->lmodel->try_login($table, $login_data);

if($user_details_from_db) $this->set_login_session($user_details_from_db);

Auth/set_login_session

public function set_login_session($user_data) {

    $sess_data = Array(
        'id'        => $user_data->id},         // user id
        'username'  => $user_data->username},   // username
        'is_logged' => true
    );

    // set session data
    $this->session->set_userdata($sess_data);
}

我认为这应该设置会话变量,但它不起作用。当我转储所有会话数据时,我只看到:

Array
(
    [__ci_last_regenerate] => 1454660014
)

顺便说一句,当我将所有 set_login_session 的内容移动到主 User.php 控制器并在那里运行相同的代码时,它可以完美运行。但不是作为 HMVC 模块。

我还通过 CI 的自动加载加载 Session 类。

我做错了什么?

提前致谢。

【问题讨论】:

    标签: php codeigniter session hmvc modular


    【解决方案1】:

    我遇到了同样的问题,在 CI 3.0.3 中使用 HMVC,可能 HMVC 模块化版本扩展与 CI 3.0.3 不兼容,会话不起作用并且查询很慢。我降级到 CI 3.0.1,它的工作完美。

    我正在使用 HMVC Modular: https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/downloads

    希望对您有所帮助。

    【讨论】:

    • 试过了。一样,不工作。可能我错过了一些愚蠢的错误,但找不到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多