PHP 8'de oturum (session) tanımlama, kullanıcının sunucuyla etkileşimde bulunduğu süre boyunca veriyi saklamayı sağlayan temel bir tekniktir. Oturumlar, genellikle kullanıcı kimlik doğrulama işlemleri, alışveriş sepeti gibi uzun süreli işlemler için kullanılır.
1. Session Başlatma
Oturum başlatmak için her sayfanın en üstünde session_start()
fonksiyonunu çağırmanız gerekir. Bu fonksiyon, mevcut bir oturumu yeniden başlatır veya yeni bir oturum oluşturur. Oturum başladıktan sonra, PHP her kullanıcıya benzersiz bir oturum kimliği (session ID) atar ve bu kimlik sayesinde sunucu kullanıcıyı tanır.
Örnek:
<?php
// Oturumu başlat
session_start();
?>
Bu kod, oturumun başlamasını sağlar. Eğer oturum daha önce başlatılmamışsa, yeni bir oturum oluşturur.
2. Session Değişkenleri Tanımlama
Oturum başlatıldıktan sonra, oturum değişkenleri tanımlanabilir. Oturum değişkenleri, $_SESSION
süper global dizisiyle tanımlanır ve kullanılır. Bu değişkenler, oturum boyunca herhangi bir sayfada kullanılabilir.
Örnek:
<?php
session_start(); // Oturumu başlat
// Oturum değişkeni tanımla
$_SESSION["kullanici_adi"] = "Ahmet";
$_SESSION["rol"] = "Yönetici";
// Veriyi ekrana yazdır
echo "Kullanıcı Adı: " . $_SESSION["kullanici_adi"] . "<br>";
echo "Kullanıcı Rolü: " . $_SESSION["rol"];
?>
Bu örnekte, "kullanici_adi" ve "rol" oturum değişkenleri olarak tanımlanır. Oturum kapanana kadar bu değişkenler saklanır ve her sayfada kullanılabilir.
3. Session Değişkenlerini Okuma
Oturuma kaydedilen veriler, $_SESSION
dizisi ile okunabilir. Oturum süresince bu veriler sayfalar arasında taşınabilir.
Örnek:
<?php
session_start(); // Oturumu başlat
// Oturum değişkenlerini kontrol et
if (isset($_SESSION["kullanici_adi"])) {
echo "Kullanıcı Adı: " . $_SESSION["kullanici_adi"];
} else {
echo "Oturumda kullanıcı adı yok.";
}
?>
Bu kod, daha önce oturumda saklanan kullanıcı adını okur ve ekrana yazdırır.
4. Session Değişkenlerini Güncelleme
Bir oturum değişkeninin değerini güncellemek için aynı oturum değişkenine yeni bir değer atamak yeterlidir.
Örnek:
<?php
session_start(); // Oturumu başlat
// Kullanıcı adını güncelle
$_SESSION["kullanici_adi"] = "Mehmet";
// Güncellenmiş değeri yazdır
echo "Güncellenmiş Kullanıcı Adı: " . $_SESSION["kullanici_adi"];
?>
Bu örnekte, oturumda saklanan kullanıcı adı güncellenir.
5. Session Değişkenlerini Silme
Bir oturum değişkenini silmek için unset()
fonksiyonu kullanılabilir.
Örnek:
<?php
session_start(); // Oturumu başlat
// Belirli bir oturum değişkenini sil
unset($_SESSION["kullanici_adi"]);
// Silindikten sonra kontrol et
if (!isset($_SESSION["kullanici_adi"])) {
echo "Kullanıcı adı oturumdan silindi.";
}
?>
Bu kod, oturumda saklanan "kullanici_adi" değişkenini siler.
6. Tüm Session Değişkenlerini Silme
Tüm oturum değişkenlerini silmek için session_unset()
fonksiyonu kullanılır. Bu fonksiyon, oturumu sona erdirmeden yalnızca oturum verilerini temizler.
Örnek:
<?php
session_start(); // Oturumu başlat
// Tüm oturum değişkenlerini sil
session_unset();
// Oturum değişkenlerinin silindiğini onayla
if (empty($_SESSION)) {
echo "Tüm oturum verileri silindi.";
}
?>
Bu kod, oturumdaki tüm verileri temizler ancak oturum devam eder.
7. Session Sonlandırma
Oturumu tamamen sona erdirmek için session_destroy()
fonksiyonu kullanılır. Bu fonksiyon, oturumu sona erdirir ve oturum verilerini sunucudan siler. Ancak oturum kimliğini saklayan çerezi otomatik olarak silmez.
Örnek:
<?php
session_start(); // Oturumu başlat
// Oturumu sona erdir
session_destroy();
// Oturum verisi olup olmadığını kontrol et
if (!isset($_SESSION)) {
echo "Oturum sona erdirildi.";
}
?>
Bu kod, oturumu tamamen sona erdirir ve tüm oturum verilerini temizler.
8. Session Kimliğini Yenileme
Oturum sabitleme (session fixation) saldırılarına karşı güvenlik sağlamak için oturum kimliğini (session ID) önemli işlemlerden sonra yenilemek iyi bir uygulamadır. Bu, session_regenerate_id()
fonksiyonuyla yapılır.
Örnek:
<?php
session_start(); // Oturumu başlat
// Oturum kimliğini yenile
session_regenerate_id(true);
// Yeni oturum kimliğini yazdır
echo "Yeni Oturum Kimliği: " . session_id();
?>
Bu kod, oturum kimliğini yeniler ve eski kimliği geçersiz kılar.
9. Session Ayarları
php.ini
dosyasında oturumlarla ilgili ayarlar yapılabilir. Ayrıca, bazı ayarları kod içinde de yapabilirsiniz.
- session.gc_maxlifetime: Oturumun sona erme süresi.
- session.cookie_lifetime: Oturum çerezinin ne kadar süreyle geçerli olacağı.
Örnek:
ini_set('session.gc_maxlifetime', 3600); // Oturum 1 saat sürecek
10. Session ve Güvenlik
- HTTPS: Oturum kimliğinin güvenli bir şekilde aktarılması için HTTPS kullanılmalıdır.
-
Session Fixation Önleme:
session_regenerate_id()
ile oturum kimliği yenilenmelidir. -
Güvenli Çerezler: Çerezlerin
secure
vehttponly
bayrakları ile korunması önemlidir.
PHP 8'de oturumlar, kullanıcının tarayıcı kapansa bile oturumun sunucuda saklanmasını sağlayarak uzun süreli işlemler ve kullanıcı bilgileri yönetimi için kullanışlı ve güvenli bir çözüm sunar.