我正在创建一个具有2个角色的登录系统,一个用于'admin',另一个用于'user'。我试着为登录做一个else if语句。这对于用户登录实际上现在发生了什么,现在每个用户都要进入admin_view。
在我的数据库中,该行被称为'admin',这是一个布尔值,因此如果users表中的'admin'列为1。如果值为0,则应加载admin_view,需要加载user_view。
我真的不知道该怎么做。
我如何分离管理员和用户之间的角色?
这是我的控制器:users.php
public function login() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[3]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[3]');
$this->form_validation->set_rules('confirm_password', 'Confirm Password', 'trim|required|min_length[3]|matches[password]');
if ($this->form_validation->run() == FALSE) {
$data = array(
'errors' => validation_errors()
);
$this->session->set_flashdata($data);
redirect('home');
} else {
$username = $this->input->post('username');
$password = $this->input->post('password');
$user_id = $this->user_model->login_user($username, $password);
if($user_id) {
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true
'admin' => 1;
);
$this->session->set_userdata($user_data);
$this->session->set_flashdata('login_success', 'You are now logged in');
$data['main_view'] = "admin_view";
$this->load->view('layouts/main', $data);
}
// Here I want the user_view to load op if the user haa a 0 value in
in the column admin.
else if($user_id) {
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true,
'admin' => 0;
);
$this->session->set_userdata($user_data);
$this->session->set_flashdata('login_success', 'You are now logged in');
$data['main_view'] = "user_view";
$this->load->view('layouts/main', $data);
} else {
$this->session->set_flashdata('login_failed', 'Sorry, you are not logged in');
redirect('home/index');
}
}
}
这是我的模型:user_model.php
public function login_user($username, $password) {
$this->db->where('username', $username);
$result = $this->db->get('users');
$db_password = $result->row(2)->password;
$admin = $result->row(7)->admin;
if(password_verify($password, $db_password)) {
return $result->row(0)->id;
} else {
return false;
}
}
}
我提供了帮助。
答案 0 :(得分:0)
首先,你的数组中有一个拼写错误,最后一个不应以;
结尾。
在user_model
中,不要返回ID,而是返回更多信息。
例如:
return $result->row(0);
然后,当你回到控制器时,你可以做到
$data = $this->user_model->login_user($username, $password);
array(
'user_id' => $data->id,
'username' => $username,
'logged_in' => true,
'admin' => $data->admin
);
从那里,您可以检查会话数据admin
是0
还是1
。
然后你可以这样做:
if ($admin == 0) {
//send to wherever
} else {
//send some place else
}