$这 - >会话级> set_flashdata(),然后$这个 - >会话级&g

2019-07-02 20:00发布

请看看下面的代码:

$this->session->set_flashdata('message', 'This is a message.');
var_dump($this->session->flashdata('message'));

它返回bool(false)

我希望它不需要 redirect()是后撤换,因为有些时候我需要在一个视图中设置flashdata后马上打电话。


经过编辑 venkat的评论

$this->session->set_flashdata('message', 'This is a message.');
$this->session->keep_flashdata('message');
var_dump($this->session->flashdata('message'));

没有区别很遗憾。

Answer 1:

那么, 文档并实际上声明

笨支持“flashdata”,或将只可用于下一个服务器请求,然后被自动清除会话数据。

作为第一件事,这obviusly意味着你需要做一个新的服务器请求。 一个重定向,刷新,链接或其他一些平均用户发送到下一个请求。

为什么,如果你在同一请求,利用它使用flashdata,反正? 你还不如不使用flashdata或使用常规会话。



Answer 2:

// Set flash data 
$this->session->set_flashdata('message_name', 'This is my message');
// After that you need to used redirect function instead of load view such as 
redirect("admin/signup");

// Get Flash data on view 
$this->session->flashdata('message_name');


Answer 3:

要设置flashdata您需要重定向控制器功能

$this->session->set_flashdata('message_name', 'This is test message');

//redirect to some function
redirect("controller/function_name");

//echo in view or controller
$this->session->flashdata('message_name');


Answer 4:

在笨重定向后显示一个提示信息

在您的控制器设置此

<?php

public function change_password(){







if($this->input->post('submit')){
$change = $this->common_register->change_password();

if($change == true){
$messge = array('message' => 'Password chnage successfully','class' => 'alert alert-success fade in');
$this->session->set_flashdata('item', $messge);
}else{
$messge = array('message' => 'Wrong password enter','class' => 'alert alert-danger fade in');
$this->session->set_flashdata('item',$messge );
}
$this->session->keep_flashdata('item',$messge);



redirect('controllername/methodname','refresh');
}

?>

In Your View File Set this
<script type="application/javascript">
/** After windod Load */
$(window).bind("load", function() {
  window.setTimeout(function() {
    $(".alert").fadeTo(500, 0).slideUp(500, function(){
        $(this).remove();
    });
}, 4000);
});
</script>

<?php

if($this->session->flashdata('item')) {
$message = $this->session->flashdata('item');
?>
<div class="<?php echo $message['class'] ?>"><?php echo $message['message']; ?>

</div>
<?php
}

?>

请检查下面的链接, 在笨重定向后显示一个提示信息



Answer 5:

改变你的config.php:

$config['sess_use_database'] = TRUE;

至:

$config['sess_use_database'] = FALSE;

这个对我有用。



Answer 6:

后重定向将闪烁消息中控制器不是在视图中可用。 在视图来显示控制器的动作获得,并通过它查看



文章来源: $this->session->set_flashdata() and then $this->session->flashdata() doesn't work in codeigniter