簡體   English   中英

PHP Laravel:如何設置或獲取會話數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM