【发布时间】:2018-01-19 19:04:53
【问题描述】:
我有一个基于 CI 2.1.3 和 PHP 5.3.3 构建的项目。根据文档here » Flash Data 部分,当我设置 flashdata 会话 var 时,它应该仅可用于下一个请求,对吧?
我做了以下测试:
class auth1 extends CI_Controller
{
public function index()
{
$this->load->helper('string');
$key = random_string('alnum', 8);
$value = random_string('alnum', 20);
$this->session->set_flashdata('csrfkey', $key);
$this->session->set_flashdata('csrfvalue', $value);
echo '<pre>';
var_dump($this->session->flashdata('csrfkey'));
var_dump($this->session->flashdata('csrfvalue'));
}
public function index2()
{
echo '<pre>';
var_dump($this->session->flashdata('csrfkey'));
var_dump($this->session->flashdata('csrfvalue'));
}
}
当我调用/auth/index2 时,我希望得到相同的值,对吧?令人惊讶的是,这些正在发生变化,见下文:
// /auth/index
string(8) "meo6dhEr"
string(20) "JNNN07XMXfmADzYw6cKc"
// /auth/index2
string(8) "I2vmFRuO"
string(20) "CbDhiD8CkY3plOK7Hg7B"
有什么想法吗?我没有将它们设置在index2 中,只是想获取它们,但是它们正在改变,为什么?
【问题讨论】:
-
我不确定您遇到了什么。我已经下载了 same 代码并在我的本地主机上进行了尝试。 index2 的值改变的唯一时间是当我访问 index 时,而不是当我直接访问 index2 时——这是有道理的,因为 index 正在设置值;并且因为它也在那里渲染,所以当你重新加载索引时它会刷新它。
-
你确定这是唯一使用这些代码的代码吗?您应该具有相同的值或它不存在。当您转到 index2 时,是否会调用 index(),因为它只是覆盖了以前的值。
-
^ 正是我认为正在发生的事情
标签: php codeigniter session-variables codeigniter-2