Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 512415
            [titulo] => Erro de session na validação de nível do usuário CodeIgniter
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-03-02 07:59:21
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 340939
            [status] => A
            [isExample] => 
            [NomeUsuario] => Claudio Ferreira Lopes
            [Apelido] => Din
            [Foto] => 340939_20131112200409.jpg
            [Conteudo] => retire o direcionamento, para o caso em que a validação da session de falso. e teste.

Outro ponto, você tem alguma função no controller da index que valide se existe uma session valida, evitado que o usuario faça dois login?, caso sim, pode ser o motivo do loop. ) )

Erro de session na validação de nível do usuário CodeIgniter

PHP
Japa
   - 01 mar 2015

Bom galera estou fazendo um painel simples mais com nível de usuário onde eu passo para a session uma array com três valores, até ai tudo bem, as funções que validam o formulário, valida o usuário do banco, se o usuário está logado ou não, função que recupera os dados da tabela validando pela session funcionam perfeitamente mais quando criei a função que valida o nível do usuário para redirecionar cada um para seu controller ele exibe o seguinte erro:
erro mostrado em tela (Clique na imagem para abrir em uma nova janela)
login_controller.php
#Código

function __construct()
{
    parent::__construct();
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    $this->load->model('login_model');
    $this->load->model('crud_model');
}

public function index(){
    $this->load->view('login_view');
}


public function logando()
{
    $regras = array(
                array(
                    'field' => 'usuario_login',
                    'label' => 'Usuário',
                    'rules' => 'trim|required|min_length[3]|max_length[32]'
                    ),
                array(
                    'field' => 'senha_login',
                    'label' => 'Senha',
                    'rules' => 'trim|required|min_length[6]|max_length[32]'
                    )
                );

    $this->form_validation->set_rules($regras);
    if($this->form_validation->run() != true || $this->login_model->validate() == FALSE){
        $this->load->view('login_view');
    }else{
        redirect('admin/admin_controller');
    } 
  } 
}

login_model.php
#Código
class Login_model extends CI_Model {

function validate()
{
    $campo['user'] = $this->input->post('usuario_login');
    $campo['pass'] = $this->input->post('senha_login');

    $where = array(
            'login_user'    =>  $campo['user'],
            'senha_user'    =>  md5($campo['pass']),
            'status_user'   =>  '1'
        );

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

    if($query->num_rows == 1)
    {
        $row = $query->row_array();//PEGA OS DADOS DO USUARIO COMPARADO COM OS CAMPOS

        $sess_validate  =   array(
            'session_logada'    =>  TRUE,//SE ELES ESTÁ LOGADO OU NÃO
            'session_user'      =>  $row['login_user'],//O NOME DE USUÁRIO QUE VEM DO BANCO
            'session_nivel'     =>  $row['nivel_user']//O NÍVEL QUE VEM DO BANCO
        );

        $this->session->set_userdata($sess_validate);

        return TRUE;

    }else{
        $this->session->set_flashdata('user_erro_model', 'Usuário inexistente ou inativo');
        redirect(current_url());
        return FALSE;
    }
}

public function is_logado()
{
    if (trim($this->session->userdata('session_logada')) != TRUE)
    {
        redirect(index_page());
    }
}

public function is_nivel()
{
    if($this->session->userdata('session_nivel') == 1){
        redirect('admin/admin_controller');
    }else{
        redirect('user/user_controller');
    }
}

public function is_dados_user()
{
    $sess['user'] = $this->session->userdata('session_user');

    $where = array(
            'login_user'    =>  $sess['user']
        );

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

    $row = $query->row_array();

    if($query->num_rows > 0) return $row;

  } 
}

admin_controller.php
#Código
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Admin_controller extends CI_Controller
{
function __construct()
{
    parent::__construct();
    $this->load->model('login_model');
    $this->login_model->is_logado();
    $this->login_model->is_nivel();
    $this->login_model->is_dados_user();
}

user_controller.php
#Código
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User_controller extends CI_Controller {

function __construct()
{
    parent::__construct();
    $this->load->model('login_model');
    $this->login_model->is_logado();
    $this->login_model->is_nivel();
    $this->login_model->is_dados_user();
}

public function index()
{
    $this->load->view('user');
}

public function sair()
{
    if($this->session->userdata('session_logada') == FALSE){
        redirect(index_page());
    }else{
        $this->session->sess_destroy();
        redirect(index_page());
    }
}

}

/* End of file user_controller.php */
/* Location: ./application/controllers/admin/user_controller.php */

Já tentei mudar as configurações do wamp server e nada

Post mais votado

Din
|
MVP
Pontos: 45
    02 mar 2015

retire o direcionamento, para o caso em que a validação da session de falso. e teste.

Outro ponto, você tem alguma função no controller da index que valide se existe uma session valida, evitado que o usuario faça dois login?, caso sim, pode ser o motivo do loop.

Japa
   - 02 mar 2015


Citação:
retire o direcionamento, para o caso em que a validação da session de falso. e teste.

Ele faz o login normalmente mas o usuário pode acessar o painel do administrador e vice-versa

Citação:
Outro ponto, você tem alguma função no controller da index que valide se existe uma session valida, evitado que o usuario faça dois login?, caso sim, pode ser o motivo do loop.

Na index apenas tenho uma função que valida se o usuário está logado, caso retorne TRUE ele redireciona pai o painel novamente
#Código

<?php 
	if($this->session->userdata('session_logada') == TRUE) redirect('admin/admin_controller');
?>