2012-07-07 11 views
12

Nel sistema di messaggistica del mio progetto quando si riceve un messaggio da un utente un avviso di posta elettronica che dice che un altro utente ha inviato un messaggio per visualizzare il messaggio clicca qui (cioè l'url del messaggio) Quindi se l'utente non ha effettuato l'accesso al sistema, viene reindirizzato alla pagina di accesso e dopo l'accesso dovrebbe tornare all'URL di riferimento. Ho creato un basecontoller nella cartella principale ed estendendo CI_controller il codice di autenticazione è il seguente.Reindirizzare l'URL di riferimento nel codeigniter

function authenticate($type = 'user') 
    { 
     if($type == 'user') 
     { 
      if($this->user_id) 
      { 
       // user is logged in. check for permissions now 
      } 
      else 
      { 
       // user isnt logged in. store the referrer URL in a var. 
       if(isset($_SERVER['HTTP_REFERER'])) 
       { 
        $redirect_to = str_replace(base_url(),'',$_SERVER['HTTP_REFERER']); 
       } 
       else 
       { 
        $redirect_to = $this->uri->uri_string(); 
       }    

       redirect('user/login?redirect='.$redirect_to); 
       exit; 
      } 
     } 

     if($type == 'admin') 
     { 
      if($this->session->userdata('admin_id') && $this->session->userdata('user_type') ==5) 
      { 
       // Admin is logged in 
      } 
      else 
      { 
       redirect('admin/login'); 
       exit; 
      } 
     } 
    } 

L'URL referer è "http://example.com/project/pm/view_conversation?id=11" ora il problema è che io sono sempre referer url fino view_conversation e non in grado di ottenere la parte ID .

Qualche suggerimento?

Grazie.

risposta

2

Perché avete doppio punto di domanda nel URL, il browser ignora la parte URL dopo la seconda. Utilizzare urlencode per reindirizzare parte, in questo modo:

redirect('user/login?redirect='.urlencode($redirect_to)); 

Ho provato fuori e funziona in questo modo.

15

Come circa appena

redirect($_SERVER['HTTP_REFERER']); 

Utilizzando $_SERVER variabile globale di php.

Questo ha funzionato per me!

1

Metti che codice nel tuo Entrata Controler

function index() { 
    $this->load->library('user_agent'); // load user agent library 

    //Set session for the referrer url 
    $this->session->set_userdata('referrer_url', $this->agent->referrer()); 
} 

Dopo Accesso reindirizzamento Codice

// user is authenticated if referrer is there 
if($this->session->userdata('referrer_url')) { 
    //Store in a variable so that can unset the session 
    $redirect_back = $this->session->userdata('referrer_url'); 
    $this->session->unset_userdata('referrer_url'); 
    redirect($redirect_back); 
} 
Problemi correlati