web-dev-qa-db-ja.com

PHP Laravel:セッションデータを設定または取得するには?

いくつかのテスト目的のために、セッションにデータを保存したいです。私もコントローラーでセッションコードを書きました。しかし、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');          
    }
6
User57

データを保存する

データを保存するには、次を使用できます。

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

グローバルヘルパーを使用する別の方法もあります。

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

データを取得する

変数を取得するには、次を使用します。

Session::get('variableName');
22
Tommy Wu

コーディングを間違えていません。問題は、サーバー側のセッションとHTML5のsessionStorageの間で少し混乱していることです。

Chrome Developer Toolsの_Resources->Session Storage_ビューは、HTML5 sessionStorageオブジェクトに保存されている情報のみを表示します。これは、クライアント側のJavaScriptを介してアクセスされるクライアント側のセッション情報です。どのタイプのサーバー側セッション情報とも完全に分離されます。

たとえば、javascriptコンソールでsessionStorage.setItem('key', 'value');を実行すると、_Resources->Session Storage_ビューにデータが表示されます。

PHP/Laravelコードはサーバー側セッションを処理しています。この情報は、クライアント側のツールからアクセスするためのものではないため、どのタイプの開発者ツールビューにも表示されません。デフォルトでは、Laravel=はファイルベースのセッションストレージを使用します。つまり、セッション情報はサーバー上のファイル(_storage/framework/sessions_)に保存されます。Cookieを使用するようにセッションストレージを変更しても、クライアント側がデータを読み取れないように、セッション情報は暗号化されますこれはセキュリティのためです。

Laravelセッションはこちら について詳しく読むことができます。
HTML5 sessionStorage here の詳細をご覧ください。

9
patricus