首页 > 解决方案 > Code Igniter Flashdata 在重定向后并不总是保持值

问题描述

所以这真的很奇怪。

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

但是,我注意到有时我会遇到问题。将其拆分为准系统(函数一实际上除了使用真实数据外,仅此而已,而函数二在获取闪存数据之前什么也不做,这就是为什么我有信心可以将它们简化为这个的原因)。

控制器一:

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 的静态链接,例如 index.html。

现在,如果我去索引并单击链接,它将正确重定向并转储数据 - 正如预期的那样。

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

我真的不明白在静态页面上等待点击静态会如何影响在两个函数之间重定向期间发生的事情 - 导致闪存数据丢失,因为在点击该链接之前甚至没有设置闪存数据并且在这两种情况下,重定向都会在此之后立即发生。

我也尝试var_dump($this->session->flashdata('extra_data')); die;在重定向之前进行,并且在这两种情况下,数据都已设置且正确 - 没有区别,因此它必须在重定向本身期间丢失 - 我只是无法理解在此之前等待如何影响它,但是一定是——不知何故。

使用标准会话或其他方法对我来说很容易解决,但是由于闪存数据完全符合我的要求,因此使用它似乎更合适 - 如果用户在设置之前在页面上徘徊,它就不起作用。

因此,任何关于为什么或更好的解决方案的理论都将不胜感激。

标签: phpcodeignitersessioncodeigniter-flashdata

解决方案


推荐阅读