codeigniter flashdata不清除

时间:2013-09-04 10:34:41

标签: php codeigniter

我是codeigniter的新手,我正在创建一个用户创建和管理的项目。这里我使用flashdata显示临时消息,如“用户创建”等,

设置Flash数据的代码是

       $this->session->set_flashdata('message', 'User Created.'); 

在我看来,我称之为

$this->session->flashdata('message'); 

我的问题是,当用户创建时,会显示flashdata,当我点击主页链接时,闪存数据仍然可用,但是当我再次单击refresh / home时它会消失。当我第一次点击主页链接时,我希望它被清除。有没有办法对其进行编码?

6 个答案:

答案 0 :(得分:4)

Flashdata仅可用于下一个服务器请求,然后自动清除。

if($user_created)
{
    $this->session->set_flashdata('success', 'User created!');
    redirect('login');
}
else
{
    redirect('register');
}

答案 1 :(得分:1)

flashdata应该显示一次。

它会在页面刷新时消失。

因此,如果您将页面重定向到另一个页面,它应该可以正常工作。

如果你不刷新页面,可以通过jQuery来完成。

说你的div显示flash:

<div id="flash-messages">Success Message</div>

写jQuery:

<script type="text/javascript">
$(function(){
  $("#flash-messages").click(function(){$(this).hide()});
});
</script>

答案 2 :(得分:1)

redirect之后你应该user created。然后当next time点击home link时,它将不会显示,请尝试此操作,

$this->session->set_flashdata('message', 'User Created.'); 
redirect(base_url().'home.php');// you can change accordingly

答案 3 :(得分:1)

必须在 $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');
}

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

答案 4 :(得分:1)

您可以使用Ajax框架自动隐藏flash消息。它们也包含所有的flash操作。

您可以从此处获取更多信息。 https://github.com/EllisLab/CodeIgniter/wiki/Ajax-Framework-For-CodeIgniter

答案 5 :(得分: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']);
}