Хотя $this->session->userdata['userlevel'];
технически допустимо и, вероятно, должно работать, вы должны использовать вместо него функцию userdata()
, если в будущем выпуске CI свойство класса Session userdata
объявит как protected
или private
:
$this->session->userdata('userlevel');
Что еще более важно, ваша модель пытается найти слишком много результатов и возвращает массив результатов, а не только один. Попробуйте вместо этого:
function get_userlevel($username){
$query = $this->db
->where('username', $username)
->limit(1)
->get('users');
return $query->row();
}
row()
возвращает одну строку или FALSE
. До этого вы строили массив из множества строк (хотя ожидается только один). Я думаю, что это корень вашей проблемы.
Кроме того, в вашем коде есть небольшая дислексия. Вы не используете правильную переменную. Вы присваиваете результат модели для $userlevel['records']
, а для сеанса присваиваете $records['userlevel']
.
Для будущей отладки, var_dump($data)
, прежде чем передавать ее в сеанс, чтобы убедиться, что это то, что вы думаете, и всегда проверять, error_reporting()
работает на полную мощность.