Opa, muito bem explicado Rafael, é exatamente assim que eu fiz também. :)
Só uma dica: a "$pagina_atual = base_url() . $this->uri->uri_string();" pode usar diretamente a função "uri_string()"! Gostei do jeito que vc verifica o loop infinito; eu fiz assim: http://pastebin.com/nxziwS0u Em 28 de fevereiro de 2012 16:15, Rafael V. de Oliveira < [email protected]> escreveu: > Existem diversas formas, como hooks (o teu problema é quase certo a falta > de carregar o helper), pelo construtor da classe, etc… > > A solução mais elegante que encontrei foi essa: > http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY > > Resumindo em miúdos, ao invés de todos os controllers herdarem o > MY_Controller, eles podem ou herdar o Admin_controller ou Public_controller > (ambos os nomes podem ser alterados). E estas duas classes (podem ser mais) > herdam o MY_Controller. > > No Admin_controller eu coloquei assim (no constructor): > > //Páginas que não necessitam estar logado > $paginas_login = array('admin/login', 'admin/logout'); > //Dê uma olhada no user_guide > $pagina_atual = base_url() . $this->uri->uri_string(); > > //Evita o loop eterno > if ( ! in_array($pagina_atual, $paginas_login) ) > { > if ( ! $this->session->userdata('login_id') ) > { > //Atenção ao $paginas_login > redirect('admin/login'); > } > } > > É por isso que quando vejo o pessoal reclamando que o CI não tem controle > de acesso, eu dou risada. É tão simples implementar que a melhor opção é > deixar a critério do desenvolvedor. > > É só prestar atenção a nome de sessions e o que está no autoload ou não. > Como o helper url eu utilizo quase sempre, ele está no autoload. > > Em 28/02/2012, às 16:51, Nino Baldo escreveu: > > > Ola pessoal, > > > > Gostaria de saber como validar se o usuário está logado ou não em todas > as > > telas e caso não esteja direcionar para o controller de login? > > > > Até agora já fiz um hook de "pre_controller", mas não consigo > redirecionar, > > pois quando uso o "redirect('pagina')" ele me exibe esse erro: Fatal > error: > > Call to undefined function redirect() > > > > > > Att, > > > > *Álvaro Vilobaldo Rios da Silva* > > > > mail to: [email protected] <[email protected]> > > *Analyst Programmer* > > > > *São Paulo and Region, Brazil* > > _______________________________________________ > > [email protected] > > http://www.codeigniter.com.br > > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > > > --------------------------- > > Oportunidade de negócio > > http://www.franquiasargohost.net > > --------------------------- > > _______________________________________________ > [email protected] > http://www.codeigniter.com.br > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > --------------------------- > Oportunidade de negócio > http://www.franquiasargohost.net > --------------------------- > _______________________________________________ [email protected] http://www.codeigniter.com.br http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br --------------------------- Oportunidade de negócio http://www.franquiasargohost.net ---------------------------

