为什么Codeigniter set_flashdata()会插入错误的信息?

时间:2013-07-16 13:07:49

标签: php codeigniter session uri

看看这段代码:

$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 个答案:

答案 0 :(得分:1)

在您将“重定向”回到另一个页面之前,您的flashdata尚未更新。

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

The docs specifically state:

CodeIgniter支持“flashdata”或仅适用于下一个服务器请求的会话数据,然后自动清除