177
211

More than 5 years have passed since last update.

Laravelでセッションを使ってみる

Last updated at Posted at 2017-08-27

概要

LaravelでSession機能を使ってみたので、忘れないようメモを残します。

セッションIDを取得する

Session::getId() 

セッションの利用方法(Request)

HTTPリクエストインスタンスを経由してSessionを使う。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request,
    App\Http\Controllers\Controller;

class TopController extends Controller
{
    public function index(Request $request)
    {
        // セッションIDの再発行
        $request->session()->regenerate();

        // セッションの値を全て取得
        $data = $request->session()->all();

        // IDを取得
        $id   = $request->session()->get('id');

        // 名前を取得 (クロージャー利用)
        $name = $request->session()->get('username', function () {
            return '名無し';
        });

        // ユーザー情報を取得
        $users = $request->session()->get('users', array());

        // ユーザー情報を保存する
        $request->session()->put('users', null);

        // ユーザー情報の情報が存在する(!= null)かチェック
        $is_users = $request->session()->has('users');

        // ユーザー情報がセット(nullでもOK)されているかチェック
        $exists   = $request->session()->exists('users');

        // 削除 (指定の値を個別に)
        $request->session()->forget('key');

        // 削除 (全データ)
        $request->session()->flush();
    }
}

セッションの利用方法(ヘルパ)

グローバルSessionヘルパ関数でSessionを利用する。

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class TopController extends Controller
{
    public function index()
    {
        // セッションIDの再発行
        session()->regenerate();

        // セッションの値を全て取得
        $data = session()->all();

        // セッションから一つのデータを取得する
        $id = session('id');

        // デフォルト値を指定する場合
        $name = session('username', '名無し');

        // セッションへ一つのデータを保存する
        session(['users' => null]);

        // ユーザー情報の情報が存在する(!= null)かチェック
        $is_users = session()->has('users');

        // ユーザー情報がセット(nullでもOK)されているかチェック
        $exists   = session()->exists('users');

        // 削除 (指定の値を個別に)
        session()->forget('key');

        // セッションをクリア&セッションIDを再発行(Illuminate\Session\Store::invalidate)
        session()->invalidate();

        // セッションIDを再発行(Illuminate\Session\Store::migrate)
        $this->session->migrate(true);

        // 削除 (全データ)
        session()->flush();
    }
}

セッションの利用方法(ファサード)

ファサードを使ってSessionを利用する。

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller,
    Session;

class TopController extends Controller
{
    public function index()
    {
        // セッションIDの再発行
        Session::regenerate();

        // セッションの値を全て取得
        $data = Session::all();

        // IDを取得する
        $id = Session::get('id');

        // 名前を取得 (クロージャー利用)
        $name = Session::get('username', function () {
            return '名無し';
        });

        // ユーザー情報を取得
        $users = Session::get('users', array());

        // ユーザー情報を保存する
        Session::put('users', null);

        // ユーザー情報の情報が存在する(!= null)かチェック
        $is_users = Session::has('users');

        // ユーザー情報がセット(nullでもOK)されているかチェック
        $exists   = Session::exists('users');

        // 削除 (指定の値を個別に)
        Session::forget('key');

        // 削除 (全データ)
        Session::flush();
    }
}

参考サイト

177
211
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
177
211