Web projelerinde en sık ihtiyaç duyduğumuz konulardan biri, şüphesiz oturum (session) yönetimi. Kullanıcı girişleri, geçici mesajlar, sepet işlemleri derken session kullanımı neredeyse her projede karşımıza çıkıyor. Bu yazıda, CodeIgniter 4 ile session nasıl yönetilir, nelere dikkat edilmeli birlikte bakalım.
CodeIgniter 4, oturumları Config\App.php
dosyasında tanımladığın ayarlara göre yönetiyor. Varsayılan olarak CodeIgniter\Session\Handlers\FileHandler
ile oturumlar dosya tabanlı olarak tutulur. Dilersen oturumları veritabanında da saklayabilirsin.
CodeIgniter 4’te session sistemi otomatik olarak başlatılır. Ama yine de controller veya model içinde kullanmak istersen şu şekilde çağırabilirsin:
$session = session();
$session = session();
$session->set('username', 'eminylmz');
Birden fazla veri eklemek istersen dizi şeklinde gönderebilirsin:
$session->set([
'username' => 'eminylmz',
'logged_in' => true,
]);
$username = session()->get('username');
Eğer ilgili veri yoksa null döner. Dilersen şöyle bir kontrol de ekleyebilirsin:
if (session()->has('username')) {
// kullanıcı oturumu var
}
Tek bir veriyi silmek için:
session()->remove('username');
Tüm oturumu silmek istersen:
session()->destroy();
Bu, özellikle kullanıcı çıkış işlemlerinde kullanılır.
Flashdata, genellikle form gönderimlerinden sonra kullanıcıya bir mesaj göstermek için kullanılır. Oturumda sadece bir sonraki isteğe kadar saklanır. Örneğin:
session()->setFlashdata('success', 'Kayıt başarılı!');
Ve view dosyasında şöyle alabilirsin:
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?= session()->getFlashdata('success') ?>
</div>
<?php endif; ?>
app/Config/App.php
içinde aşağıdaki alanlara göz atabilirsin:
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionExpiration = 7200; // saniye cinsinden
public $sessionSavePath = WRITEPATH . 'session';
Veritabanı üzerinden session tutmak istersen, sessionDriver
’ı DatabaseHandler
yapman ve uygun tabloyu oluşturman gerekir.
Yorumlar (0)