Я столкнулся с проблемой при использовании CI 3.0.3 с расширением HMVC.
Я хочу установить переменные сеанса при успешном входе пользователя в систему. Поэтому у меня есть класс 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:
Auth / Логин:
$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.
Также я загружаю класс Session через автозагрузку CI.
Что я делаю неправильно?
Заранее спасибо.
Я столкнулся с той же проблемой, использую HMVC в CI 3.0.3, возможно, расширение модульной версии HMVC несовместимо с CI 3.0.3, сеанс не работает и запрос выполняется очень медленно. Я понизил до CI 3.0.1, его работа отлично.
Я использую HMVC Modular из этого:
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/downloads
Надеюсь, это поможет.
Других решений пока нет …