2012-07-07 13 views
12

W systemie przesyłania komunikatów w moim projekcie, gdy otrzymasz wiadomość od użytkownika, otrzymasz wiadomość e-mail z informacją, że inny użytkownik wysłał wiadomość, aby wyświetlić wiadomość, kliknij tutaj (np. Adres URL wiadomości). jeśli użytkownik nie jest zalogowany w systemie, przekierowuje się do strony logowania i po zalogowaniu powinien wrócić do adresu URL referer. Zrobiłem basecontoller w głównym folderze i rozszerzając CI_controller kod uwierzytelniający jest następujący.Przekierowanie do URL-a odsyłacza w 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; 
      } 
     } 
    } 

URL odsyłający jest „http://example.com/project/pm/view_conversation?id=11” teraz problem jest jestem coraz URL odsyłający do view_conversation i nie mógł dostać część id .

Jakieś sugestie?

Dziękuję.

Odpowiedz

2

Ponieważ masz podwójny znak zapytania w adresie URL, przeglądarka ignoruje część adresu URL po drugiej. Użyj urlencode dla przekierować część, tak jak poniżej:

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

Przetestowałem go i to działa w ten sposób.

15

Jak o właśnie

redirect($_SERVER['HTTP_REFERER']); 

Korzystanie $_SERVER zmienną globalną PHP.

To zadziałało dla mnie!

1

Umieść ten kod w loginu Kontroler

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()); 
} 

Po zalogowaniu Kod Przekierowanie

// 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); 
}