BelajarDev merupakan bagian dari eksperimen Muhammad Ikhsan di Smartech Studios.
Laravel 13.x — Session
Pada dasarnya, aplikasi berbasis HTTP bersifat stateless. Ia tidak tahu apakah user sudah login atau belum, kecuali jika informasi status login tersebut disimpan (menggunakan session).
Laravel mendukung beberapa session driver (seperti Memcached, Redis, dan database) yang kesemuanya bisa diakses menggunakan API yg sama (menggunakan perintah PHP yang sama).
- File konfigurasi session di
config/session.php
Session driver
Daftar session driver yang didukung:
file- session disimpan dalam file distorage/framework/sessions.cookie- session disimpan dalam encrypted cookies.database- session disimpan dalam relational database.memcached/redis- session disimpan menggunakan Redis atau Memcached (cache-based).dynamodb- session disimpan di AWS DynamoDB.array- session disimpan dalam array PHP sebagai penyimpanan sementara (tidak persistent), hanya untuk testing agar session tidak benar-benar disimpan.
Sebelum menggunakan database session driver, pastikan sudah ada tabel session. Ini biasanya sudah disertakan ketika menjalankan migration 0001_01_01_000000_create_users_table.php. Andaikata belum ada tabel tersebut, gunakan perintah Artisan php artisan make:session-table untuk membuatnya.
Sebelum menggunakan redis session driver, pastikan PHP extension PhpRedis sudah diinstall melalui PECL, atau bisa menggunakan package Composer predis/predis.
Menggunakan Session
Mengambil data session
Ada 2 cara:
- menggunakan instance
Request - menggunakan global
sessionhelper
Menggunakan Request instance di controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\View\View;
class UserController extends Controller
{
/**
* Show the profile for the given user.
*/
public function show(Request $request, string $id): View
{
$value = $request->session()->get('key');
// ...
$user = $this->users->find($id);
return view('user.profile', ['user' => $user]);
}
}
Menggunakan global session helper
Route::get('/home', function () {
// Retrieve a piece of data from the session...
$value = session('key');
// Specifying a default value...
$value = session('key', 'default');
// Store a piece of data in the session...
session(['key' => 'value']);
});
Bila helper session dipanggil dengan nilai parameter berupa array, ia akan menyimpan nilai ke dalam session (array key sebagai key, array value sebagai nilai data session); bukan untuk mengambil data session.
session(['key' => 'value']);
Memberikan default value
$value = $request->session()->get('key', 'default');
$value = $request->session()->get('key', function () {
return 'default';
});
Perintah Artisan
Membuat tabel session apabila belum ada
php artisan make:session-table