Наиболее эффективным способом было бы хранить эти данные в переменных сеанса при входе в систему. Затем вы можете получить к нему доступ в любое время, просто используя $this->session->userdata()
вызовы в любом месте вашего сайта и сохраняя большое количество запросов к базе данных при каждой загрузке страницы (это может показаться не большой экономией, если на вашем сайте мало трафика, но еслиу вас есть сотни одновременно работающих пользователей, каждая из которых загружает несколько страниц за сеанс, вы смотрите на экономию тысяч запросов к базе данных в час)
При успешном входе в систему вы можете, например, построить и создать массив со всемиданные сеанса вам могут понадобиться. Например:
$sess_data = array(
'user_id' => $user_id,
'name' => $name,
'last_name' => $last_name,
'email' => $email,
'access_level' => $access_level
);
и затем установите push весь массив в данные сеанса следующим образом:
$this->session->set_userdata('logged_in', $sess_data);
впоследствии, если вам нужно имя пользователя, просто echo $this->session->userdata['logged_in']['name'];
(да, я использую массив logged_in
в данных сеанса, чтобы отделить пользовательские данные от других переменных сеанса, которые идут в отдельный массив в сеансе ... но это не обязательно делать)
, так как сеанс активен, результаты будут поступать из памяти, а не из запроса к базе данных, тем самым устраняя большую нагрузку на ваш сайт. Это немного больше, чтобы настроить это, но вы делаете это один раз в своей процедуре входа в систему, а затем просто забываете об этом.