我正在使用Code Igniter作为Web项目。仅供管理员用户使用的CodeIgniter受限制页面
我有两个不同的用户,一个基本用户和一个管理员用户。
我只是通过在我的数据库名为admin列相等于“是”或“否”
我有两个控制器,一个控制器是纯粹进行登录认证(登录区分具有基本的用户管理用户.php)的目的,另一个是网页管理等(site.php)。
我想让网页只对管理员用户可用。这是从我的登录控制器我的代码片段在成功登录目前重定向我的用户以及太设置会话数据..
if ($this->input->post('btn_login') == "Login")
{
//check if username and password is correct
$usr_result = $this->login_model->get_user($username, $password);
if ($usr_result) //active user record is present
{
//set the session variables
$sessiondata = array(
'username' => $username,
'loginuser' => TRUE
);
$this->session->set_userdata($sessiondata);
if($usr_result->admin == 'Yes')
redirect("site/admin");
else
redirect("site/agent");
}
这是我的主控制器的一个片段,其管理我的网页等等(网站.PHP):
public function admin(){
$data["title"]="My Admin";
$this->load->model("notifications");
if ($this->session->userdata('loginuser')){
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->view('adminpage', $data);
$this->load->view("site_footer");
} else {
redirect('site/restricted');
}
}
public function restricted(){
$this->load->view("restricted");
}
现在你可以看到从我的片段上方的方法管理员()我必须只在用户登录到该页面的其他限制时显示的页面记录一个if语句。
我该如何更改此代码以允许只有拥有列admin = Yes的用户才能访问此页面?由于目前我的所有用户都管理或不能访问此页面。
我希望这是有道理的,谢谢你提前!
正常情况下,我登录后在会话中保存'user_id'。我用user_id做了一个查询,它会给我用户信息。现在我检查这个user_id是否有权访问这个方法或控制器。我建议使用@ bandrei2408答案。你可以在会话中存储'user_id'而不是'username'。其他解决方案也不错 – 2015-02-11 22:52:54