gpt4 book ai didi

php - Laravel session 数据不会跨页面加载

转载 作者:IT王子 更新时间:2023-10-28 23:56:36 31 4
gpt4 key购买 nike

我尝试运行以下代码:

Session::put('progress', '5%');

dd(Session::get('progress'));

这将在转储中显示“5%”。

如果我重新运行同一个页面但注释掉 Session::put('progress', '5%'); 这样只有 dd() 行调用时,我得到一个空值,而不是存储在上一个页面加载中的 5% 值。

这是我的 session 配置,所以我知道它应该存储数据:

'driver' => 'native',
'lifetime' => 120,
'expire_on_close' => false,

为什么 Laravel 不跨页面加载存储 session 数据?

最佳答案

问题是因为您在 Laravel 完成其应用程序生命周期之前终止了脚本,因此放入 session (但尚未存储)的值也被终止了。

当 Laravel 应用程序生命周期开始时,Session 中的任何 put 值都不会被存储,直到应用程序生命周期结束。也就是说,当 Session 中的任何 put 值最终/真正被存储时。

如果你勾选the source您会发现与上述相同的行为:

 public function put($key, $value)
{
$all = $this->all();

array_set($all, $key, $value);

$this->replace($all);
}

如果要测试它,请执行以下操作:

  1. 在不终止脚本的情况下在 session 中存储一个值。

    Route::get('test', function() {
    Session::put('progress', '5%');
    // dd(Session::get('progress'));
    });
  2. 检索已存储的值:

    Route::get('test', function() {
    // Session::put('progress', '5%');
    dd(Session::get('progress'));
    });

关于php - Laravel session 数据不会跨页面加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23917409/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com