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ódigofunction __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ódigoclass 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');
?>