PHP Laravel:如何设置或获取会话数据?
Posted
技术标签:
【中文标题】PHP Laravel:如何设置或获取会话数据?【英文标题】:PHP Laravel: How to set or get Session Data? 【发布时间】: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');
【问题讨论】:
【参考方案1】:存储数据
要存储数据,您可以使用:
Session::put('variableName', $value);
还有另一种方式,通过全局帮助器:
session(['variableName' => $value]);
获取数据
要获取变量,您可以使用:
Session::get('variableName');
【讨论】:
为什么我在控制台看到Resources->Session Storage
什么都没有显示?
你有没有尝试过其他地方?就像在视图或控制器中一样。查看它是否返回值。如果不是,则确认 $name 是否为空
$name 不为空,因为我已经看到它使用 dd();
尝试 Session::get('variableName');在其他地方。例如在视图中,查看它是否返回值。
不,我只是写 $name 来访问会话数据,但它显示 Undefined variable: name
【参考方案2】:
您没有犯过编码错误。问题是您在服务器端会话和 html5 的 sessionStorage 之间有点混淆。
Chrome 开发者工具上的Resources->Session Storage
视图仅向您显示存储在 HTML5 sessionStorage 对象中的信息。这是通过客户端 javascript 访问的客户端会话信息,与任何类型的服务器端会话信息完全分开。
例如,在您的 javascript 控制台中运行 sessionStorage.setItem('key', 'value');
,您将看到该数据显示在 Resources->Session Storage
视图中。
您的 PHP/Laravel 代码正在处理服务器端会话。此信息不会显示在任何类型的开发人员工具视图中,因为它不应该被客户端工具访问。默认情况下,Laravel 使用基于文件的会话存储,这意味着您的会话信息存储在服务器上的文件中(storage/framework/sessions
)。即使您将会话存储更改为使用 cookie,会话信息也会被加密,因此客户端无法读取数据。这是出于安全目的。
您可以阅读有关Laravel sessions here 的更多信息。 你可以阅读更多关于HTML5 sessionStorage here的信息。
【讨论】:
【参考方案3】:如果您在该会话变量上有现有值,首先您需要清除它。 那么你可以像这样替换新值。
session()->forget('key');
session()->put('key', 'value');
【讨论】:
以上是关于PHP Laravel:如何设置或获取会话数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何从数据库中获取数据以及会话如何在 laravel 中工作? [复制]
错误 500:如何通过 Laravel 自定义配置文件获取会话变量?