Erro de session na validação de nível do usuário CodeIgniter
01/03/2015
0
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:
[img:descricao=erro mostrado em tela]http://i.stack.imgur.com/FRHAV.png[/img]
login_controller.php
login_model.php
admin_controller.php
user_controller.php
Já tentei mudar as configurações do wamp server e nada
[img:descricao=erro mostrado em tela]http://i.stack.imgur.com/FRHAV.png[/img]
login_controller.php
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
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
<?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
<?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
Saymon Tavares
Curtir tópico
+ 0
Responder
Post mais votado
02/03/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.
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.
Claudio Lopes
Responder
Mais Posts
02/03/2015
Saymon Tavares
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
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
<?php if($this->session->userdata('session_logada') == TRUE) redirect('admin/admin_controller'); ?>
Responder
Clique aqui para fazer login e interagir na Comunidade :)