2012-07-25 51 views
0

我正嘗試將用戶重定向到他們在嘗試登錄前查看的頁面。例如,如果他們正在查看baseurl/people/abraham_lincoln,然後決定登錄,登錄後他們將被重定向到baseurl/people/abraham_lincoln。奇怪的是,它是爲一些URL而不是其他的。對於某些網址,我將附加「javascript/jsFunctions.js」作爲網址,而不是之前的網址。Codeigniter重定向在登錄頁面上發生變化

在每個控制器的頂部,我設置會話變量做我的重定向:

$this->session->set_userdata('Redirect', current_url()); 

我打印這個會話變量到我的控制器上,並在我的日誌鑑於頂部測試目的。以下是我在登錄時收到的一些結果。

那的工作一個URL的一個例子:

網址我試圖從登錄:

baseURL/people 

什麼獲取我的控制器頂部打印爲我重定向會話變量:

baseURL/people 

什麼打印在我的日誌頂部視圖中作爲我的重定向會話變量:

baseURL/people 

無法運作的一個URL的一個例子:

網址我試圖從登錄:

baseURL/people/abraham_lincoln 

什麼獲取我的控制器頂部打印爲我重定向會話變量:

baseURL/people/abraham_lincoln 

什麼打印在我的登錄視圖頂部因爲我重定向會話變量:

baseURL/people/javascript/jsFunctions.js 

我不知道,如果它的問題,但我還有些路由從routes.php文件文件這些URL:

$route['people/(:any)'] = "people/index/$1"; 
$route['people/(:any)/(:num)'] = "people/index/$1/$2"; 

我曾試圖建立我的會話變量很多不同的方式,包括:

current_url() 
base_url().uri_string() 
base_url().$this->uri->segment(1).... 
base_url().$this->uri->rsegment(1).... 

如果任何人能想到的爲什麼我得到這些JavaScript的變量,而不是URL我在找我將不勝感激任何輸入。

謝謝!

P.S.我忘了提及,如果我刷新一個不工作的頁面,例如abraham_lincoln頁面,然後進入登錄頁面,我會收到正確的Redirect會話變量。幾乎就像第一次通過時沒有正確設置,但不知道如何解決這個問題,因爲我已經嘗試在加載視圖之前在頂部和右側設置會話變量。

回答

0

用例只應用於登錄過程。因此把它放在每個控制器的頂部可能不是我們想要的。的

,而不是把current_url在會議一開始,你應該在登錄功能

<?php 
    public function login($redirecturl) { 
     $this->form_validation->set_rules('username', 'Username', 'required'); 
     // etc. 
     if($this->form_validation->run()) { 
      $query = "select id from users where username=? and password=sha(?)"; 
      // etc. 
      $this->session->set_userdata('userid', $row->id); 
      redirect($redirecturl); 
     } else { 
      $data['redirecturl']=$redirecturl; 
      $data['content']='loginview'; 
      $this->load->view('template', $data); 
     } 
    } 
?> 

追加到登錄鏈接

<?php echo anchor('/home/login/' . url_encode(current_url()), 'login');?> 

在登錄視圖

<?php 
    echo form_open('/home/login/' . url_encode($redirecturl)); 
    // etc. 
?> 
+0

感謝您的答覆。即使當我將它附加到我的視圖中的url時,我仍然會將javascript.js文件附加到current_url()。不知道爲什麼。我目前有一個使用$ _SERVER ['HTTP_REFERER']的解決方案,目前似乎正在工作。我知道這不是100%可靠的,但現在正在工作。再次感謝您的回覆。 – CoreyMSchafer 2012-07-25 16:34:35