Belajar Laravel (Chapter 17 | Tutorial HTTP Session)
Session menyediakan fitur untuk menyimpan informasi tentang aktifitas user yang melakukan request. Pada satu session terdapat beberapa aktifitas seperti page views, event, interaksi, dan transaksi. Berikut contoh beberapa aktifitas dalam container session.
Scope of This Chapter
Pada tutorial ini kita akan membahas tentang Session pada Laravel
#Konfigurasi
File konfigurasi session pada Laravel disimpan di config/session.php. Secara default session pada Laravel menggunakan driver file.
Session driver dapat menentukan dimana data session akan disimpan pada setiap request. Berikut beberapa session driver yang tersedia:
- file — session disimpan pada lokasi storage/framework/sessions.
- cookie — sessions are stored in secure, encrypted cookies.
- database — sessions disimpan pada relational database.
- memcached / redis — sessions disimpan pada server memcached/redis yang berbasis cache.
- array — sessions disimpan pada array PHP
#Penggunaan Session
Berikut beberapa cara penggunaan session pada Laravel
#Mengakses Data Session
Untuk mendapatkan data session bisa diakses via global session helper dan Request instance dengan menggunakan method get() dan menyisipkan satu argument “key”.
// mengambil session dengan key = key
$value = $request->session()->get(‘key’);// mengambil data dengan default value
$value = $request->session()->get('key', 'default');$value = $request->session()->get('key', function () {
return 'default';
});
#Menggunakan Global Session Helper
Kita bisa menggunakan global session PHP function untuk menyimpan data session.
// mengambil data session pada key
$value = session(‘key’);// mengambil data dengan default value
$value = session(‘key’, ‘default’);// menyimpan data session
session([‘key’ => ‘value’]);
#Mengambil Semua Data Sesion
Jika ingin mengambil semua data session, kita bisa menggunakan method all()
$data = $request->session()->all();
#Mengecek item session
- Menggunakan method has() untuk mengecek apakah session terdapat value ada dan not null. Return method ini true
if ($request->session()->has(‘users’)) {
}
- Menggunakan method exists() untuk mengecek apakah key session sudah tersedia meskipun value session null
if ($request->session()->exists(‘users’)) {
//
}
#Menyimpan Data
Untuk menyimpan data session menggunakan method put()
// Via request instance
$request->session()->put(‘key’, ‘value’);// Via global helpel
session([‘key’ => ‘value’]);
#Pushing To Array Session Values
Jika ingin menambahkan value pada array, misalkan kita ingin menambahkan value “user.teams”, menggunakan method push():
$request->session()->push('user.teams', 'developers');
#Retrieving & Deleting An Item
Kita bisa mengambil value dari key session kemudian menghapusnya dengan single statement dengan method pull():
$value = $request->session()->pull(‘key’, ‘default’);
#Deleting Data
Untuk menghapus data session kita bisa menggunakan method forget():
// Forget a single key…
$request->session()->forget(‘key’);// Forget multiple keys…
$request->session()->forget([‘key1’, ‘key2’]);$request->session()->flush();
#Contoh Pengunaanya
Step 1 — Membuat Controller
Buat controller SessionController dengan perintah Artisan pada terminal
php artisan make:controller SessionController
Kemudian edit file controller:
// Edit file app/Http/Controllers/SessionController.php<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class SessionController extends Controller
{
public function index(Request $request)
{
if($request->session()->has('user')) { return $request->session()->get('user');
} else { return 'Data tidak ditemukan pada session';
}
} public function store(Request $request)
{
$request->session()->put('user','John Doe');
return "Data user sudah ditambah pada session";
} public function delete(Request $request)
{
$request->session()->forget('user');
return "Data sudah dihapus pada session.";
} public function push(Request $request)
{
if($request->session()->exists('user')) {
$request->session()->push('user.teams', 'developers');
return $request->session()->get('user');
} else { return 'Data tidak ditemukan pada session';
}
}
}
Step 2 — Tambah Route
// edit file routes/web.phpRoute::get('session/put','SessionController@store');
Route::get('session/get','SessionController@index');
Route::get('session/push','SessionController@push');
Route::get('session/del','SessionController@delete');
Step 3 — Buka route pada browser
Jalankan perintah php artisan serve pada terminal, dan akses beberapa URL berikut pada browser.
Next Chapter
Authentication
Support the Author
Jika suka dengan artikel ini, bisa support saya ditautan berikut ini
Cheers
Tobi Ahmad
Founder of Dot Local