Laravalでセッション機能を実装する
●3種類の実装方法がある。
一つ目は『HTTPリクエストインスタンス』を経由する方法。
二つ目は『グローバルSessionヘルパ関数』を利用する方法。
三つめは『ファザード』を利用する方法。
上記は三つとも同じように使えることができる。
特に違いはないようで、個人の好みの方法で書いていい模様。
セッションIDを取得する
Session::getId()
『HTTPリクエストインスタンス』を経由する方法
<?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ヘルパ関数』を利用する方法
<?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();
}
}
?>
『ファザード』を利用する方法
<?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();
}
}
?>
使い方
●ヘルパ関数を使って実装してみた。
コントローラーファイルに記述する。
記述前にヘルパ関数を利用するのであれば、頭に
use App\Http\Controllers\Controller;
を記述する。
リクエスト経由やファザードではまた違う記述をするので、チェックする。
試しにセッションに値を保存してみる。
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MemberController extends Controller
{
//PHP標準の機能で値をセッションに保存する場合の記述
// $_SESSION['member_login'] = 1;
// $_SESSION['member_code'] = $rec -> code;
// $_SESSION['member_name'] = $rec -> name;
//上記の値をLaravelの機能(ヘルパ関数)でセッションに保存する場合の記述
session(['member_login' => 1]);
session(['member_code' => $rec -> code]);
session(['member_name' => $rec -> name]);
}
?>
参考サイト