Flash数据未在Codeigniter中清除

时间:2013-09-17 09:44:34

标签: php codeigniter google-chrome firefox

我正在使用Codeigniter 2.1.4,我遇到了flashdata的一些问题。 当我成功提交记录时,我可以显示flashdata消息。但是,如果从显示flashdata消息的页面转到另一页,然后使用浏览器后退按钮返回上一页,则会再次显示flashdata消息。
如何在使用后清除flashdata消息? 我认为它不是flashdata发出缓存问题。我很困惑为什么会这样。 如果其缓存问题然后如何删除它?

以下是我用过的代码,

//In the manage of controller
$this->session->set_flashdata('message', "Record updated successfully.");

// In the view of controller
$data['message'] = $this->session->flashdata('message');

// In the view page
echo $message;

7 个答案:

答案 0 :(得分:4)

您在控制器中的代码是正确的

//In the manage of controller
$this->session->set_flashdata('message', "Record updated successfully.");
redirect('controller_name/function_name','refresh');

现在可以像这样使用

if($this->session->flashdata('message')){echo $this->session->flashdata('message');}

希望它能运作

答案 1 :(得分:3)

Flash仅在下次刷新后消失

答案 2 :(得分:1)

如果要清除控制器或其他视图文件中的set_flash,则可以使用此简单代码。

$this->session->set_flashdata('error', 'User not found...'); //create set_flash

销毁 set_flash

//echo "<pre>"; print_r($_SESSION); die; //for check 

if(isset($_SESSION['error'])){
    unset($_SESSION['error']);
}

答案 3 :(得分:0)

$this->session->set_flashdata('message', "Record updated successfully.");

将flashdata重定向设置为某个功能或相同功能后。

答案 4 :(得分:0)

必须在 $this->session->set_flash('item','value');

之后重定向页面

实施例

if ($this->form_validation->run() == FALSE){
    $this->session->set_flashdata('error',validation_errors());
    redirect(base_url().'user/login');
}
else{
    $this->session->set_flashdata('success','Thank you');
    redirect(base_url().'user/login');
}

通常,开发人员在向同一页面提交数据时会出错。他们设置了闪存数据,但忘了重定向。

答案 5 :(得分:0)

如果您使用相同的控制器功能刷新,则不会删除flashdata。在浏览器中来回移动也不会影响flashdata。 清除flashdata重定向到另一个控制器功能,它将工作。

答案 6 :(得分:0)

由于代码点火器不提供破坏 flashdata 的可能性,您可以通过第二次虚构调用 flashdata 函数而不使用 echo 来解决此问题:

if ($this->session->flashdata('message')) :
    echo $this->session->flashdata('message'); // First normal call
    $this->session->flashdata('message'); // Second fictitious call
endif;