2012-07-07 15 views
12

私のプロジェクトのメッセージングシステムでは、ユーザーからメッセージを受け取ったときに、別のユーザーがメッセージを表示するためのメッセージを送信したという電子メールアラートが表示されます(つまり、メッセージのURL)。ユーザーがシステムにログインしていない場合、ユーザーはログインページにリダイレクトされ、ログイン後にrefererのURLに戻ります。私はコアフォルダにbasecontollerを作り、CI_controllerを認証コードを拡張すると次のようになります。codeigniterのreferer urlにリダイレクトする

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は今の問題は、私はview_conversationまでリファラURLを取得し、ID部分を取得することができないのですです 「http://example.com/project/pm/view_conversation?id=11」であります。

提案がありますか?

ありがとうございます。

答えて

32

これは助けることができる:

CI 2+ https://www.codeigniter.com/userguide2/libraries/user_agent.html

CI 3+ http://www.codeigniter.com/user_guide/libraries/user_agent.html

$this->load->library('user_agent'); 
if ($this->agent->is_referral()) 
{ 
    echo $this->agent->referrer(); 
} 
+0

(Y)のおかげで、のような魅力の後

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

あなたのログインのcontrolerでそのコードを入れてください –

2

をURLで二重の疑問符を持っているので、ブラウザは2番目のURL部分の後にurl部分を無視します。あなたが一部をリダイレクトするためにそうように、urlencodeを使用してください:私はそれをテストしてみた、それはこのように動作

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

15

どう

redirect($_SERVER['HTTP_REFERER']); 

ちょうど約PHPの $_SERVERグローバル変数を使用します。

これは私のために働いた!

1

ログインリダイレクトコード

// 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); 
} 
関連する問題