[英]PHP Laravel: How to set or get Session Data?
我想在會話中存儲一些數據用於某些測試目的。 我也在控制器中編寫了會話代碼。 但是在 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 的 sessionStorage 之間有點混淆。
Chrome 開發人員工具上的Resources->Session Storage
視圖僅向您顯示存儲在 HTML5 sessionStorage 對象中的信息。 這是通過客戶端javascript訪問的客戶端會話信息,與任何類型的服務器端會話信息完全分開。
例如,運行sessionStorage.setItem('key', 'value');
在您的 javascript 控制台中,您將看到該數據顯示在Resources->Session Storage
視圖中。
您的 PHP/Laravel 代碼正在處理服務器端會話。 此信息不會顯示在任何類型的開發人員工具視圖中,因為客戶端工具不打算訪問它。 默認情況下,Laravel 使用基於文件的會話存儲,這意味着您的會話信息存儲在服務器上的文件中(在storage/framework/sessions
)。 即使您將會話存儲更改為使用 cookie,會話信息也會被加密,客戶端無法讀取數據。 這是出於安全目的。
您可以在此處閱讀有關Laravel 會話的更多信息。
您可以在此處閱讀有關HTML5 sessionStorage 的更多信息。
如果您在該會話變量上有現有值,首先您需要清除它。 那么你可以像這樣替換新值。
session()->forget('key');
session()->put('key', 'value');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.