2013-07-16 43 views
0

看看這段代碼:爲什麼Codeigniter set_flashdata()會插入錯誤的信息?

$this->session->set_flashdata('prev_page', $this->uri->uri_string()); 
echo $this->uri->uri_string(); 
echo $this->session->flashdata('prev_page'); 

當來訪mywebsite/index.php/home/

echo $this->uri->uri_string();打印home

echo $this->session->flashdata('prev_page');打印home/picktype,在同一個控制器完全不同的功能!

有問題的控制器功能:

class Home extends MY_Controller { 

function __construct() 
{ 
    parent::__construct(); 
} 

public function index() 
{ 
    if($this->input->cookie('disclaimer_seen_token')) 
    { 
     $this->load->view('home'); 

    } else { 

     redirect('disclaimer'); 
    } 

} 

public function picktype() 
{ 
    $this->load->view('picktype'); 
} 

} 

爲什麼會這樣發生?

回答

1

您的flashdata尚未更新,直到您「重定向」回到另一個頁面。

因此,您的$this->session->flashdata('prev_page')是重定向前的最後一頁。

The docs specifically state:

笨支持「flashdata」,或將只適用於下一個服務器請求,然後會話數據自動清除

+0

我知道這一點。我不斷刷新主頁。輸出總是一樣的。 – styke

+0

但你在哪裏「刷新」主頁?即主頁本身做了重定向,所以你最終循環了flash數據? – Laurence

+0

flashdata未被循環。我從瀏覽器刷新 - 所有其他頁面調用(我有很多在我的家庭控制器中)刷新頁面並更新值後,回顯uri字符串和相同的uri字符串作爲flashdata。只有索引函數表現得很奇怪。 – styke

相關問題