Muito boa a tua solução (Y). A respeito do $this->uri->uri_string(), bem lembrado Nando, porém depende do caso. Até onde eu me lembro, a função não retorna o base_url. Mas não estou falando com certeza, minha cabeça dói e vou vazar daqui.
Abraços ;) Em 28/02/2012, às 19:35, Nando Araujo escreveu: > 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 > --------------------------- _______________________________________________ [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 ---------------------------

