重定向后,代码点火器Flashdata并不总是保持值

时间:2019-03-07 11:52:19

标签: php codeigniter session codeigniter-flashdata

所以这是一个很奇怪的东西。

我最近发现了Code Ignitor的闪存数据,这正是我所需要的。

但是,我注意到有时会遇到问题。 将其拆分为准系统(功能一实际上除了使用实际数据外仅执行此操作,功能二在获取闪存数据之前不执行任何操作,这就是为什么我有信心将其简化为此功能)。

controller_one:

function one()
{
  $data['foo'] = 'bar';
  $this->session->set_flashdata('extra_data', $data);
  redirect('controller_two/two');
}

控制器二:

function two()
{
  if($this->session->flashdata('extra_data'))
  {
    var_dump($this->session->flashdata('extra_data'));
  }
}

第三个文件只是一个静态页面,带有指向controller_one / one say索引的静态链接。

现在,如果我进入索引并单击链接,它将按预期正确重定向和转储数据。

现在-这就是奇怪的地方。如果我转到索引-等待10分钟+ ,然后单击链接,它将重定向,但Flash数据为空(NULL)。

我真的看不到在静态页面上等待单击静态内容会如何影响这两个函数之间的重定向过程中发生的事情-导致闪存数据丢失,因为直到连接该链接时才设置闪存数据单击,两种情况下重定向都会立即发生。

我也尝试过在重定向之前进行var_dump($this->session->flashdata('extra_data')); die;,在这两种情况下,数据都已设置并正确-没有区别,因此在重定向过程中一定会丢失它-我只是无法理解稍等片刻就可以影响到它,但这一定是-在某种程度上。

使用标准会话或其他方法,对于我来说很容易解决,但是由于Flash数据确实可以满足我的要求,因此使用它似乎更合适-如果用户在设置页面之前仍在页面上徘徊,那将不起作用

因此,将对有关原因或解决方案的任何理论都将不胜感激。

0 个答案:

没有答案