Laravel Session Kullanımı

Bu yazımızda oturum işlemleri için kullanılan session olayının Laravelde nasıl kullanıldığına değineceğiz.

Session Nedir ?

Sessionlar kullanıcıdan alınan bilgilerin birden çok kullanılması için sunucu tarafında saklanan bilgilerdir. Mesela giriş bilgileri, sepet uygulaması buna en basit örneklerden biridir.

Laravel Session Yapılandırma

Laravel ile geliştirdiğimiz uygulamarda session bilgileri config/session.php dosyasında ayarlanır. Eğer projemizde session kullanacaksak bu alanı gözden geçirmemizde fayda var. Laravel ile proje oluşturduğumuzda varsayılan olarak standart yapı session konfigürasyon dosyası otomatik olarak gelir.

Session driver yapılandırma seçeneği her oturum için verilerin nerede saklanacağını belirtmemizi sağlar.

Session Bilgilerini Veritabanına Kaydetme

Session bilgilerini veritabanında oluşturmak için laravel bizden bir tablo oluşturmamızı isteyecektir. Örnek bir tablo yapısı aşağıdaki gibidir.

Öncelikle konsol ekranına şunları yazıyoruz.

php artisan session:table

Ardından karşımıza böyle bir migration dosyası çıkıyor. Dosya migration/tarih_create_sessions_table.php (tarih o günün tarihini yazıyor)

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSessionsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('sessions'function (Blueprint $table) {
            $table->string('id')->primary(); 
            $table->string('ip_address'45)->nullable();
            $table->string('user_name'45)->nullable();
            
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('sessions');
    }
}


up() metodunu ben sizlere anlatmak için 3 sütundan oluşturdum.

Daha sonra migration dosyamızı veritabanına eklemek için şu komutu yazıyoruz.

php artisan migrate

Artık sessionları veritabanına eklemek için hazırladığımız tablomuz hazır.

Laravel Session Kullanımı

Session Verilerine Ulaşma

Session verilerine laravel projemizde 2 şekilde ulaşabiliriz. Bunlardan birincisi Request sınıfı ikincisi ise global fonksiyon kullanarak.

Varsayalım bir UserController.php adında bir controller dosyamız var. Bu controller dosyasının bir metodunda session bilgisine ulaşmak istiyoruz. Bunu şu şekilde yapabiliriz.

<?php

namespace App\Http\Controllers;

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

class UserController extends Controller
{
   
    public function show(Request $request, $id)
    {
        $deger= $request->session()->get('isim');
        //sessionda kayıtlı isim değerini ekrana yazar
    }
}

get metodu ile session değerine ulaşmak istediğimizde bu metoda ikinci parametre olarak varsayılan bir değer atayabiliriz. Eğer sessionda böyle bir değer yoksa varsayılan olarak bu değeri alır ve hata çıkmasını engeller.

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

$value = $request->session()->get('key', function () {
    return 'default';
});

Global Helper İle Session Verilerine Ulaşma

Ayrıca session değerlerine ulaşmak için PHP metotlarından session() metodu kullanarak ulaşabiliriz.

Route::get('/home', function () {
    // Key değeri ile ulaşma
    $value = session('key');

    // Varsayılan değer atama
    $value = session('key', 'default');

    // Sessionda bir veri parçası saklama
    session(['key' => 'value']);
});

Tüm Session Değerlerine Ulaşma

all() metodu ile tüm oturum bilgilerine ulaşabiliriz.

$data = $request->session()->all();

Session Değerinin Olup Olmadığını Kontrol Etme

Oturumda bir değerin olup olmadığını öğrenmek için has metodunu kullanabiliriz. Eğer değer var ve değeri null ise true döner bunu unutmayın.

if ($request->session()->has('isim')) {
    //isim değeri varsa bura çalışır.
}

Eğer değer varsa ve değeri null ise bunu öğrenmek için exist metodunu kullanabiliriz.

if ($request->session()->exists('users')) {
    //değer null değilse bura çalışır.
}

Sessiona Veri Ekleme

Sessiona değer eklemek için genellikle put metodu veya session global metodunu kullanırız.

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

//global bu
session(['key' => 'value']);

Sessiona Yeni Değer Ekleme

push metodu ile sessiona yeni bir değer ekleyebiliriz.

$request->session()->push('kisi.meslek', 'developers');

Sessiondaki Tek Bir Değeri Silme

pull metodu ile sessiondaki değeri silebiliriz.

$value = $request->session()->pull('key', 'default');
// Tek bir Değeri silme
$request->session()->forget('isim');

Birden Fazla Veya Tüm Değerleri Silme

flush metodu ile tüm session verilerini temizleyebiliriz.

$request->session()->flush();

Flash Session Kullanımı

Bazı durumlarda tek kullanımlık sessionlar kullanmak isteyebiliriz. Mesela veri ekleme güncelleme ve silme işlemlerinden sonra kulanıcıya başarılı veya hata mesajları göstermek için. Laravelde flash sessionu şöyle kullanabiliriz.

$request->session()->flash('durum', 'Başarılı!');

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.