#29-Laravel Session

Laravel sudah menyediakan fungsi-fungsi default untuk melakukan manipulasi session. Session yang digunakan laravel berbeda dengan session pada PHP pada umunya. Jadi jika anda menggunakan fungsi-fungsi session pada laravel, session tersebut tidak dapat terbaca pada variabel $_SESSION dan begitu pula sebaliknya. Pada artikel kali ini saya akan menjelaskan cara penggunaan session pada laravel ini.

#KONFIGURASI

Konfigurasi dari session pada laravel terdapat di dalam file config/session.php. Di dalam file tersebut, terdapat variabel-variabel konfigurasi di mana sebagian besar dari variabel tersebut dapat diatur dengan menggunakan file .env. Anda cukup menginisialisasi variabel konfigurasi session pada file .env. Misalnya anda ingin melakukan konfigurasi driver session yang digunakan, anda cukup menambahkan variabel SESSION_DRIVER pada file .env seperti contoh di bawah ini.
SESSION_DRIVER = database

Jadi program akan menggunakan driver database sesuai nilai yang terdapat pada file .env tersebut.

Konfigurasi driver session pada laravel ini adalah sebagai berikut :

  • file – session disimpan pada direktori storage/framework/sessions
  • cookie – session disimpan pada cookie
  • database – session disimpan dalam database
  • memcached / redis – session disimpan dengan menggunakan memcached atau redis
  • array – session disimpan pada array PHP dan session ini tidak akan bertahan

Jika anda menggunakan driver database maka anda perlu membuat terlebih dahulu table sessions untuk menyimpannya. Schema dari tabel tersebut adalah sebagai berikut :

Schema::create('sessions', function ($table) {
    $table->string('id')->unique();
    $table->unsignedInteger('user_id')->nullable();
    $table->string('ip_address', 45)->nullable();
    $table->text('user_agent')->nullable();
    $table->text('payload');
    $table->integer('last_activity');
});

Anda dapat menggunakan perintah artisan berikut untuk membuat tabel tersebut:

php artisan session:table
php artisan migrate

#CARA PENGGUNAAN SESSION

Terdapat 2 macam cara untuk melakukan manipulasi data session pada laravel yaitu dengan menggunakan helper global session dan yang kedua adalah dengan menggunakan Request. Untuk menggunakan Request, hanya dapat dilakukan pada file controller. Sedangkan penggunaan helper session dapat dilakukan di view juga.

#BUAT CONTROLLER TestController

Berikut ini kita akan membuat Controller Test Penggunaan Session

php artisan make:controller TestController

app/Http/Controllers/TestController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    public function index(Request $request)
    {
        if($request->session()->has('key')){
			echo $request->session()->get('key');
		}else{
			echo 'Tidak ada data dalam session.';
		}
    }
    public function store(Request $request){
        $request->session()->put('key', 'Om Bagoes');
        echo 'Menyimpan session nama=Om Bagoes';
    }
    public function destroy(Request $request){
        $request->session()->forget('key');
        echo 'Menghapus session name';
    }
}

#MEMBUAT ROUTE UNTUK TestController

Tambahkan Route berikut ke dalam routes/web.php

Route::get('/session','TestController@index');
Route::get('/session/store','TestController@store');
Route::get('/session/destroy','TestController@destroy');

#MENYIMPAN NILAI SESSION

Cara untuk menyimpan nilai pada session melalui Request dapat dilihat pada contoh kode TestController method store(Request $request) 

$request->session()->put('key', 'Om Bagoes');

jika melalui Request sementara jika menggunakan global helper session ganti kodenya dengan

session(['key' => 'Om Bagoes']);

#PENGECEKAN KEBERADAAN KEY SESSION

Laravel juga sudah menyediakan fungsi untuk melakukan pengecekan apakah session dengan key tersebut ada atau tidak. Terdapat 2 macam fungsi pengecekan. Yang pertama adalah dengan menggunakan fungsi has yang akan mengembalikan nilai true jika nilai dari session tersebut ada dan bukan null. Berikut ini adalah contoh penggunaannya :

if ($request->session()->has('key')) {
    //
}

Yang kedua adalah dengan menggunakan fungsi exists yang akan mengembalikan nilai true jika  nilai dari session dengan key yang dicari ada walaupun nilainya adalah null. Contoh penggunaannya adalah sebagai berikut :

if ($request->session()->exists('key')) {
    //
}

#MENDAPATKAN NILAI SESSION

Cara untuk mendapatkan data session melalui Request dapat dilihat pada contoh kode TestController method index(Request $request)

$request->session()->get('key', 'default');

Namun jika melalui Request sementara jika menggunakan global helper session ganti kodenya dengan

session('key', 'default');

#MENGHAPUS SESSION

Cara untuk mendapatkan data session melalui Request dapat dilihat pada contoh kode TestController method destroy(Request $request)

$request->session()->forget('key');
$request->session()->flush();

Jika melalui Request sementara jika menggunakan global helper session ganti kodenya dengan

session()->forget('key');
session()->flush();

#SIMULASI

Buka halaman di bawah ini satu per satu, jangan lupa menjalankan php artisan serve jika service belum dinyalakan.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>