Php 为什么CodeIgniter中的flashdata不总是工作,而userdata总是工作?
我有一个代码块,用于为Php 为什么CodeIgniter中的flashdata不总是工作,而userdata总是工作?,php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,我有一个代码块,用于为报告控制器中的flashdata分配一些值,另一个代码块用于访问导出数据控制器中的flashdata 报告控制器: if ($this->input->get_post('date_frm')) { $conditions[] = 'appointment_date >= "'.trim($this->input->get_post('date_frm', TRUE)).'"'; }
报告
控制器中的flashdata
分配一些值,另一个代码块用于访问导出数据
控制器中的flashdata
报告
控制器:
if ($this->input->get_post('date_frm')) {
$conditions[] = 'appointment_date >= "'.trim($this->input->get_post('date_frm', TRUE)).'"';
}
if ($this->input->get_post('date_to')) {
$conditions[] = 'appointment_date <= "'.trim($this->input->get_post('date_to', TRUE)).'"';
}
$conditions = $this->search_model->searchterm_handler($conditions);
$this->session->set_flashdata('ext_data', $conditions);
$myVar = $this->session->flashdata('ext_data');
$this->session->keep_flashdata('ext_data');
它并不总是有效的,但是当我使用userdata
而不是flashdata
时,它工作得很好。为什么?
OP:当我使用userdata
而不是flashdata
时,它工作正常
带有flashdata()
的数据集仅为一次性请求保存,然后清除:
CodeIgniter支持“flashdata”或只能用于下一个请求的会话数据,然后自动清除
…和keep_flashdata()
仅为第一次请求后的另一次请求保存数据:
如果您发现需要通过其他请求保留flashdata变量,可以使用keep\u flashdata()
方法
但是,
userdata()
始终可用,直到会话被销毁
见:
我认为您应该阅读完整的文档:首先您应该知道什么是 它在被调用时不会清除会话值。即使它可用于下一次服务器调用,也不会用于第二次调用 例如,假设控制器中有两个函数
function test1()
{
$this->session->set_flashdata('ext_data', 'test');
}
function test2()
{
echo $this->session->userdata('ext_data');
echo $this->session->userdata('ext_data');
echo $this->session->userdata('ext_data');
}
现在,如果您调用您的站点url/controller/test1
,它将为外部数据设置test
之后,如果您调用您的站点\u url/controller/test2
,它将打印test
单词3次,这意味着您可以在这一次使用此会话变量,但对于下一次调用(再次点击您的站点\u url/controller/test2
),它将为空
希望你明白这是什么意思
CodeIgniter支持“flashdata”,或仅在
可用于下一个请求,然后自动清除
“不总是工作”和“工作很好”到底是什么意思?@Sparky:“不总是工作”也就是说,当我在我的机器上执行这个程序时,flashdata正在工作,当部署到服务器上时,它停止工作,当我将代码合并到另一台在同一项目上工作的开发人员机器上时,它也停止工作。你不认为这足够重要,可以在你的OP中解释吗?我认为在test2()中您遗漏了flashdata,但您编写了userdata,这很混乱