【问题标题】:PHP Laravel: How to set or get Session Data?PHP Laravel:如何设置或获取会话数据?
【发布时间】:2016-09-14 12:01:00
【问题描述】:

我想在会话中存储一些数据以用于某些测试目的。我也在控制器中编写了会话代码。但是在 console.log ->resources -> session 我找不到我存储的任何值。 如果有人帮我找出我在控制器中犯的错误,请。

这是我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Department;
use App\Http\Requests;
use Cookie;
use Tracker;
use Session;

 public function postdepartmentSave(Request $request)
    {
         $this->validate($request,[
            'code' => 'required|min:2|max:7|unique:departments',          
            'name' => 'required|unique:departments',          
            ]);
            $department = new Department();           
            $department->code = $request->Input(['code']);            
            $department->name = $request->Input(['name']);
              $name=   $department->name;
         Session::put('name', $name);
        dd($name);
            $department->save();            
            return redirect('departmentSavePage');          
    }

【问题讨论】:

    标签: php laravel session laravel-5


    【解决方案1】:

    存储数据

    要存储数据,您可以使用:

    Session::put('variableName', $value);
    

    还有另一种方式,通过全局帮助器:

    session(['variableName' => $value]);
    

    获取数据

    要获取变量,您可以使用:

    Session::get('variableName');
    

    【讨论】:

    • 为什么我在控制台看到Resources-&gt;Session Storage什么都没有显示?
    • 你有没有尝试过其他地方?就像在视图或控制器中一样。查看它是否返回值。如果不是,则确认 $name 是否为空
    • $name 不为空,因为我已经看到它使用 dd();
    • 尝试 Session::get('variableName');在其他地方。例如在视图中,查看它是否返回值。
    • 不,我只是写 {{$name}} 来访问会话数据,但它显示 Undefined variable: name
    【解决方案2】:

    您没有犯过编码错误。问题是您在服务器端会话和 HTML5 的 sessionStorage 之间有点混淆。

    Chrome 开发者工具上的Resources-&gt;Session Storage 视图仅向您显示存储在 HTML5 sessionStorage 对象中的信息。这是通过客户端 javascript 访问的客户端会话信息,与任何类型的服务器端会话信息完全分开。

    例如,在您的 javascript 控制台中运行 sessionStorage.setItem('key', 'value');,您将看到该数据显示在 Resources-&gt;Session Storage 视图中。

    您的 PHP/Laravel 代码正在处理服务器端会话。此信息不会显示在任何类型的开发人员工具视图中,因为它不应该被客户端工具访问。默认情况下,Laravel 使用基于文件的会话存储,这意味着您的会话信息存储在服务器上的文件中(storage/framework/sessions)。即使您将会话存储更改为使用 cookie,会话信息也会被加密,因此客户端无法读取数据。这是出于安全目的。

    您可以阅读有关Laravel sessions here 的更多信息。
    你可以阅读更多关于HTML5 sessionStorage here的信息。

    【讨论】:

      【解决方案3】:

      如果您在该会话变量上有现有值,首先您需要清除它。 那么你可以像这样替换新值。

       session()->forget('key');
       session()->put('key', 'value');
      

      【讨论】:

        猜你喜欢
        • 2017-06-09
        • 2019-06-09
        • 2021-07-15
        • 2023-03-08
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-20
        相关资源
        最近更新 更多