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
---------------------------

Responder a