我的数据库中有不同的用户角色。当用户注册时,它可以在DB中插入多个角色。但是当我在会话中保存它时,它只保存一个角色。在某些示例中,用户有2个角色 - 学生和客户,但它仅显示为学生。
我的登录控制器是:
<?php
class Home extends CI_Controller {
//some code
public function login ()
{
$this->load->model('user_model');
$user=$this->user_model->login();
if(count($user) > 0)
{
$this->load->library('session');
$data = array(
'username' => $user['username'],
'user_id' => $user['user_id'],
'is_logged_in' => TRUE
);
$this->session->set_userdata($data);
$user_role=$this->user_model->user_role();
$role=$this->session->set_userdata($user_role);
$user_role = $this->session->userdata('role_id');
if($user_role == 1)
{
redirect('student/index');
}
//and so on for other roles
}
}
}
在我的模型中,我使用“row_array”。如果我使用result_array(),则会注意到:“未定义的索引用户名,控制器中的user_id”。我的模特是:
public function login()
{
$this->db->where('username', $this->input->post('username'));
$this->db->where('password',sha1($this->input->post('password')));
$result=$this->db->get('users');
return $result->row_array();
}
public function user_role()
{
$this->db->select('role_id');
$this->db->where('user_id', $this->session->userdata['user_id']);
$result=$this->db->get('user_roles');
return $result->result_array();
}
答案 0 :(得分:1)
您可以在会话中保存数组 你可以这样做
$user_role=$this->user_model->user_role();//lets assume it returns the roles array
$this->session->set_userdata('roles'$user_role);//now you can set it inside roles varibale which contains the role array
//now to get the value from session use this
$roles=$this->session->userdata('roles');
//now roles contains the array of roles
//check your current roles info in the $roles array
希望你明白。