2011-12-01 103 views
3

我有一個分頁顯示,其中在每個頁面調用中,我將當前URI字符串設置爲一個會話(在我的控制器中)。Codeigniter中的重定向

$current = $this->uri->uri_string(); 
$this->session->set_userdata('return_to', $current); 

從該視圖的用戶可以點擊一個鏈接到別的地方去(編輯表格),其中提交時(和表單驗證是正確的),我想返回分頁結果的正確頁面。

if($this->form_validation->run('edit') == TRUE) 
{ 
    $back_to = NULL; 
    $back_to = '/'.$this->session->userdata('return_to'); 
    .... 
    redirect($back_to); 
} 

似乎在Firefox有時工作,但在Chrome中去世,重定向到的favicon.ico

任何和所有幫助讚賞

UPDATE: 我的問題是不是由於相對/絕對地址,對於第二個控制器中的一些奇怪的原因,重定向的目標是favicon.ico,而不是存儲在會話中的內容。

+1

也許'$ back_to = site_url()。$ this-> session-> userdata('return_to');'? – stealthyninja

+0

H同樣的問題,它已經幾個小時:(你找到任何解決方案? – YahyaE

+0

在這裏找到答案:http://stackoverflow.com/questions/20300311/codeigniter-weird-parameter-favicon-ico – mrbm

回答

0

我會使用絕對URL而不是相對的。

試試這個

if($this->form_validation->run('edit') == TRUE) 
{ 
    $back_to = NULL; 
    $back_to = 'http://www.mydomain.com/'.$this->session->userdata('return_to'); 
    .... 
    redirect($back_to); 
} 

由於stealthyninja指出,它可能會更好使用CodeIgniter的SITE_URL()或BASE_URL(),而不是硬編碼的。在config.php中設置SITE_URL()(我相信)

1
if($this->form_validation->run() == TRUE) 
{ 
    if($this->session->userdata('return_to') 
    { 
     redirect($this->session->userdata('return_to')); 
    } 
    else 
    { 
     redirect(base_url()); 
    // or trigger some error 
    } 
} 

不需要分配一個變量,redirect()同時使用一個完整的URL和分段URL(很像SITE_URL(),這正是什麼是uri_string()返回。

因此,如果這也不行,很可能你的會話未設置或已過期。另外,考慮到CI的會話餅乾,所以瀏覽器就可以擁有它的作用在這裏。