如何通过登录和会话区分多个面板?

时间:2018-08-16 07:47:47

标签: codeigniter session login admin

它创建了会话,但不会转到index2和index3,而是始终使用else重定向并转到index方法,但是我也想转到index2和index3来处理其他面板。

对于所有来之不易的条件,所有时间都成功创建了会话。

当我使用print_r作为代码查看数据是否要发送时,我的表单数据和数组也会显示。

问题是它没有显示任何错误,只是使用索引方法的文件重定向。

我的控制器

class Main extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->model('Main_Model');
    $this->load->helper('url');
    $this->load->library('session');

    $method = $this->router->fetch_method();
    $methods = array('index','index2','index3');
    if(in_array($method,$methods))
    {
        if(!$this->session->has_userdata('signup_email'))
        {
            redirect(base_url('Main/login'));
        }
    }       
}

public function index()
{
    if($this->session->has_userdata('signup_email'))
    {
        $this->load->view('BKO/index');
    }
}

public function index2()
{
    if($this->session->has_userdata('signup_email'))
    {
        $this->load->view('Admin/index');
    }
}

public function index3()
{
    if($this->session->has_userdata('signup_email'))
    {
        $this->load->view('Owner/index');
    }
}

public function login()
{   
    //$data['select'] = $this->Main_Model->get_select();
    $this->load->view('login');
}

public function login_process()
{
    //$roll = $this->input->post('select');
    echo $email = $this->input->post('email');
    echo $pass = $this->input->post('upass');

$query = $this->Main_Model->login_process($email,$pass);

    if($query == TRUE)
    {
        $this->session->set_userdata('signup_email');
        $session = array(
                'signup_email' => $email 
                );
        $this->session->set_userdata($session);
        redirect(base_url('Main/check_login'));
    }
    else
    {
        $this->session->set_flashdata('error','Invalid Email or Password');
        redirect(base_url('Main/login'));

    }
}

public function check_login()
{
    if($this->session->userdata() == 'admin@gmail.com')
    {
        echo "Welcome - <h2>".$this->session->userdata('username')."</h2>";
        redirect(base_url('Main/index2'));  
    }

    elseif($this->session->userdata() == 'owner@gmail.com')
    {
        echo "Welcome - <h2>".$this->session->userdata('username')."</h2>";
        redirect(base_url('Main/index3'));  
    }
    else
    {
        echo "Welcome - <h2>".$this->session->userdata('username')."</h2>";
        redirect(base_url('Main/index'));   
    }
}

public function logout()
{
    $this->session->sess_destroy();
    redirect(base_url());
}   

我的模特

    public function login_process($email,$pass)
    {
        //$this->db->select('*');
        //$this->db->where('roll_id',$roll);
        $this->db->where('signup_email',$email);
        $this->db->where('signup_password',$pass);

        $query = $this->db->get('signup');

        if($query->num_rows() > 0)
        {
            $this->session->set_flashdata('signup_email');
            return true;
        }
        else
        {
            return false;
        }
    }

1 个答案:

答案 0 :(得分:0)

您在这里错过了参数

if($this->session->userdata() == 'admin@gmail.com')

应该是

if($this->session->userdata('signup_email') == 'admin@gmail.com')