刚开始学习CodeIgniter并用它做一个小项目。我一直在尝试为会话添加一个userlevel,但每当我尝试回显它时,它都不会显示任何内容。继承我的模型代码:
function get_userlevel($username){
$this->db->where('username',$username);
$query = $this->db->get('users');
foreach($query->result() as $row){
$rows[] = $row;
}
return $rows;
}
我的控制器代码:
$userlevel['records'] = $this->membership_model->get_userlevel($this->input->post('username'));
$data = array(
'username' => $this->input->post('username'),
'userlevel' => $records['userlevel'],
'logged_in' => true
);
$this->session->set_userdata($data);
显示userlevel的代码 - >
<?php echo $this->session->userdata['userlevel'] ; ?>
任何人都可以帮助这个noobie吗? :)
答案 0 :(得分:0)
虽然$this->session->userdata['userlevel'];
在技术上有效并且可能应该有效,但您应该使用userdata()
函数,以防将来的CI版本将Session类userdata
属性声明为{{1 }或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)
完全爆炸。
答案 1 :(得分:0)
使用括号访问'userdata'并将其分配给数组,以便能够处理它所拥有的内容。
<?php
if($this->session->userdata('userlevel')) {
$arr = $this->session->userdata('userlevel');
var_dump($arr['username']);
var_dump($arr['userlevel']);
var_dump($arr['logged_in']);
}
?>