2010-01-25 14 views
5

Sto costruendo un sito CodeIgniter di base che richiede un login prima di poter accedere a qualsiasi sito.CodeIgniter: reindirizzamento dinamico post-login?

Se un utente visita un certo sito URL, qualcosa di simile:

http://www.mysite.com/project/detail/2049 

e sono in corso disconnesso, ho impostato a calci automaticamente di nuovo alla pagina di login.

La mia domanda è, dopo aver effettuato l'accesso, qual è il modo migliore per reindirizzarli all'URL originale che hanno digitato, invece di reindirizzarli alla home page dei siti Web?

Stavo pensando, forse, creare dinamicamente l'URL come elemento nascosto nel modulo di login e reindirizzare lì su un login di successo ... Che cosa ne pensate voi ragazzi? Esiste una migliore/migliore pratica per questo tipo di reindirizzamento dinamico post-login?

risposta

16

Quando hanno colpito nella pagina di registrazione limitato l'URI e impostarlo come dati di sessione con

this->session->set_userdata('redirect', 'page/uri/here');

poi reindirizzare il login/iscrizione

collegati devono controllare per vedere se 'reindirizzare 'è presente con

if($this->session->userdata('redirect')) 
{ 
    redirect($this->session->userdata('redirect')); 
} 

se non li aveva poi portarli ovunque tu normalmente li prende dopo un login

+0

brillante, grazie! –

0

quando tentativo di accesso viene intercettato:

redirect('/public/login/r'.$this->uri->uri_string()); 

così nel tuo caso, dopo il reindirizzamento l'url potrebbe assomigliare a questo:

http://www.example.com/public/login/r/project/detail/2049 

se l'accesso riesce

$uri = $this->uri->uri_string(); 
$redirect = substr($uri, strpos($uri, '/r/')+2); 
redirect($redirect); 

reindirizzerà alla risorsa originale.

(e no, il 2 non dovrebbe essere +3)

0

Perché non si creare un valore di sessione al login e quindi verificare che in ogni pagina necessarie per garantire?

costruirlo in una libreria, in modo da poter chiamare il seguente:

$this->mylibrary->login($user); 

e

$this->mylibrary->is_logged_in($user); sulla parte superiore di ogni pagina e automaticamente reindirizzare i visitatori al tuo sito principale.

+0

Penso che tu abbia frainteso la domanda. –

0

Sto utilizzando flashdata per il reindirizzamento.

this->session->set_flashdata('redirect_url', 'page/uri/here'); 

collegati devono controllare per vedere se è presente 'REDIRECT_URL' con

if($this->session->flashdata('redirect_url')) 
{ 
    redirect(base_url().$this->session->flashdata('redirect_url'))); 
} 

Spero che questo aiuto

Problemi correlati