Kat*_*ntz 11 php session codeigniter
我使用CodeIgniter 2.1.0,我想在数据库中插入数据后得到一条消息,如"您的信息已成功更新.".对于这项工作,我在CI_Controller中有以下功能:
function myCiInser(){
... Here is my query ...
//$data: this var is result query that is true
if($data){
$this -> session -> set_flashdata('message', 'Your information was successfully updated.');
redirect('url/myurl');
}
}
Run Code Online (Sandbox Code Playgroud)
我认为:
<?php
$message = $this->session->flashdata('message');
if($message){
echo '<div id="error_text">' . $message . '</div>';
}
//I test this : "echo $message;" but don't give output
?>
Run Code Online (Sandbox Code Playgroud)
但我不会在视野中给出消息,但redirect已完成并且正常工作.在表格ci_sessions列的数据库中user_data我有这个:
a:2:{s:9:"user_data"; s:0:""; s:19:"flash:new:message"; s:42:"您的信息已成功更新.";}
怎么解决这个问题?
更新:
我有以下错误(我使用chorme并通过Ctrl + Shift + ji获取此警报):
无法加载资源:服务器响应状态为404(未找到)
我修复它(现在我没有错误)但在显示消息中仍然是同样的问题.我该怎么办?
Que*_*cia 18
从Codeigniter 会话类文档中,关于Flashdata,我们可以阅读:
CodeIgniter支持"flashdata"或仅可用于下一个服务器请求的会话数据,然后自动清除.
您的问题可能是,当您重定向时,该过程需要多个请求,清除您的flashdata.
要查看是否是这种情况,只需将以下代码添加到要重定向到的控制器的构造函数中:
$this->session->keep_flashdata('message');
Run Code Online (Sandbox Code Playgroud)
这将使flashdata保留另一个服务器请求,允许它在之后使用.
小智 12
我也有这个问题.我不记得我在哪里看到了,但这是我的解决方案.
redirect('url/myurl','refresh');
Run Code Online (Sandbox Code Playgroud)
CodeIgniter没有将重定向视为另一个请求.所以flashdata没有设置在重定向中,但它是在我加载的下一页上.