php - Laravel session /存储在刷新时为空

标签 php laravel

我有以下代码:

            echo 'First try: <br />';
            $input = Session::get('input');
            pre($input, false);

            echo 'Second try: <br />';
            Session::put('input', 'test');
            pre(Session::get('input'));

第一次加载时给出以下输出:

First try:
Second try:
test

这在第一次出现时是预期的,但是当我重新加载页面时,我得到了完全相同的输出。刷新后所有数据都会丢失。

我知道这不是闪存数据,但我不知道为什么它不存储数据。我在 Windows 上使用基于文件的 session 和 Xampp(使用 artisan serve 时也是如此)。

存储文件夹是可写的。

编辑:刚刚尝试使用数据库 session ,结果相同。我直接在路由文件中执行此操作,因此没有其他代码可以搞砸它。

前置函数:

function pre( $data , $kill = true)
{
    echo '<pre>'.print_r($data,true).'</pre>';
    if($kill){
      exit;
}

最佳答案

Laravel 的 session 数据是作为响应关闭过程的一部分写入的。这是出于效率原因 - 如果您在一个请求中进行数十次 Session::put 调用,最好一次批量进行所有调用。

因此,如果您没有使用 View::makeResponse::json 或您拥有的东西来引起响应,而是 exitdie, session 数据不会被写入,因为您已经缩短了响应生命周期。

关于php - Laravel session /存储在刷新时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206021/

相关文章:

javascript - 使用 Jquery 在循环内动态乘以值

php - 如何在 Yii 2.0.6 中激活 Gii 代码生成器?

php - 返回新响应返回空数据

php - 我应该如何建立表之间的关系?

javascript - 模型 Laravel 和 Vue 上的自定义方法

php - 带连接的 Laravel 查询,多个表中的名称相同

php - adldap 身份验证的证书信任问题

php - 如何在 PHP 的 cURL POST HTTP 请求中包含授权 header ?

php - Laravel - 加入具有复合主键的表

javascript - 我如何获取 Axios 发布请求正在进行中