2012-07-07 12 views
12

Trong hệ thống nhắn tin của dự án của tôi khi bạn nhận được thông báo từ người dùng, bạn thông báo bằng email nói rằng người dùng khác đã gửi một tin nhắn để xem tin nhắn nhấp vào đây (tức là url của tin nhắn) nếu người dùng không đăng nhập vào hệ thống, anh ta sẽ chuyển hướng đến trang đăng nhập và sau khi đăng nhập, nó sẽ trở lại url của người giới thiệu. Tôi đã thực hiện một basecontoller trong thư mục lõi và mở rộng CI_controller mã xác thực là như sau.Chuyển hướng đến url của người giới thiệu trong 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 referer là "http://example.com/project/pm/view_conversation?id=11" bây giờ vấn đề là tôi nhận được url referer đến view_conversation và không có khả năng để có được những phần id .

Bất kỳ đề xuất nào?

Cảm ơn bạn.

Trả lời

2

Bởi vì bạn có dấu hỏi đôi trong url, trình duyệt bỏ qua phần url sau phần thứ hai. Sử dụng urlencode để bạn chuyển hướng một phần, như vậy:

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

Tôi đã thử nghiệm và hoạt động theo cách này.

15

Làm thế nào về chỉ

redirect($_SERVER['HTTP_REFERER']); 

Sử dụng $_SERVER biến toàn cầu của php.

Điều này phù hợp với tôi!

1

Đặt mã rằng trong Login Controler bạn

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

Sau khi đăng nhập Redirection Mã

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