Codeigniter:无法区分管理员和成员页面

时间:2015-01-29 13:56:41

标签: php codeigniter session

这是登录控制器代码:

public function login_validation(){

        $this->load->library('form_validation');
        $this->load->model('model_users');

        $this->form_validation->set_rules('username', 'Username', 'required|trim|alpha_numeric|xss_clean|strip_tags');
        $this->form_validation->set_rules('password', 'Password', 'required|md5|trim|xss_clean|strip_tags');

        if ($this->form_validation->run()){
            $data = array(
                'username' => $this->input->post('username'),
                'is_logged_in' => 1
            );

            if($this->model_users->get_status($data['username'])){
                $data = array(
                'username' => $this->input->post('username'),
                'status' => 'member',
                'is_logged_in' => 1
                );
                $this->session->set_userdata($data);
                redirect('member');
            } else {
                $data = array(
                'username' => $this->input->post('username'),
                'status' => 'admin',
                'is_logged_in' => 1
                );
                $this->session->set_userdata($data);
                redirect('admin');
            }
        } else {
            $this->login();
        }
    }

这是管理员控制器:

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin extends CI_Controller {

    public function __construct(){
        parent::__construct();
        if (! $this->session->userdata('is_logged_in')){
            $status = $this->session->userdata('status');
            if ($status == 'member'){
                redirect('main/restricted');
            }
redirect('main/restricted');
        }
    }

    public function index() {
        $data = array(
            'title' => 'Admin Page'
        );
        $this->load->view("header", $data);
        $this->load->view("admin");
        $this->load->view("nav");
        $this->load->view("footer");
    }
}

这是成员控制器代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Member extends CI_Controller {

    public function __construct(){
        parent::__construct();
        if (! $this->session->userdata('is_logged_in')){
            $status = $this->session->userdata('status');
            if ($status == 'admin'){
                redirect('main/restricted');
            }
redirect('main/restricted');
        }
    }

    public function index() {
        $data = array(
            'title' => 'Member Page'
        );
        $this->load->view("header", $data);
        $this->load->view("member");
        $this->load->view("nav");
        $this->load->view("footer");
    }
}

我想知道为什么会员登录后,他们可以进入管理页面,管理员登录后也可以访问会员页面。

我希望它能够工作,成员登录会员后才能访问会员页面。管理员登录后,管理员只能访问管理页面。

请有人帮助我。

2 个答案:

答案 0 :(得分:2)

if (! $this->session->userdata('is_logged_in')) 

我认为您的if条件会返回false

你没有为else条件写任何内容。为else写了一些代码 如果if条件为false,则每个人都可以访问成员和管理员控制器。

确保if条件返回true

我认为您的代码可能就像这样

 if (! $this->session->userdata('is_logged_in'))
 {
        //write code for not loged user
 }
 else
 {
      $status = $this->session->userdata('status');
        if ($status == 'member'){
            redirect('main/restricted');
        }
   }

答案 1 :(得分:0)

您需要将会话状态与“&#39;成员”进行比较。或者&#39; admin&#39;而不只是检查它是否设置。 在管理员控制器中:

$status = $this->session->userdata('status')
if ($status == 'member'){
    redirect('main/restricted');
}

并且类似地与&#39; admin&#39;进行比较。在成员控制器中。