我想在会话中存储一些数据用于某些测试目的。我也在控制器中编写了会话代码。但在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');
}
存储数据
要存储数据,可以使用:
Session::put('variableName', $value);
还有另一种方式,通过全局助手:
session(['variableName' => $value]);
正在获取数据
要获得变量,您可以使用:
Session::get('variableName');
您没有犯任何编码错误。问题是您在服务器端会话和HTML5的会话存储之间有点混淆。
Chrome开发工具上的Resources->Session Storage
视图仅显示存储在HTML5会话存储对象中的信息。这是通过客户端javascript访问的客户端会话信息,与任何类型的服务器端会话信息完全分离。
例如,在javascript控制台中运行sessionStorage.setItem('key', 'value');
,您将看到数据显示在Resources->Session Storage
视图中。
您的PHP/Laravel代码正在处理服务器端会话。这些信息不会显示在任何类型的"开发人员工具"视图中,因为客户端工具都无法访问这些信息。默认情况下,Laravel使用基于文件的会话存储,这意味着您的会话信息存储在服务器上的文件中(在storage/framework/sessions
中)。即使您将会话存储更改为使用cookie,会话信息也会被加密,因此客户端无法读取数据。这是出于安全目的。
你可以在这里阅读更多关于拉拉威尔会议的信息
你可以在这里阅读更多关于HTML5会话存储的信息。
如果会话变量上有现有值,首先需要清除它。然后可以像这样替换新值。
session()->forget('key');
session()->put('key', 'value');