PHP 8'de Session (Oturum), kullanıcıyla sunucu arasında veri depolamak ve bu veriyi kullanıcı gezinirken veya oturumu kapatana kadar tutmak için kullanılan bir yöntemdir. Oturumlar, sunucu tarafında saklanır ve çerezler ile oturumun izlenmesi sağlanır. Çerezlerden farklı olarak, oturum verileri tarayıcıda değil, sunucuda tutulur ve bu sayede daha güvenli bir veri saklama yöntemi sağlar.
1. PHP Session Nasıl Çalışır?
Bir oturum başlatıldığında, sunucu her kullanıcıya özel bir oturum kimliği (session ID) atar. Bu oturum kimliği, genellikle kullanıcı tarayıcısında bir çerez olarak saklanır. Kullanıcı sunucuyla her etkileşime geçtiğinde bu kimlik tarayıcı tarafından gönderilir ve böylece sunucu, bu kullanıcının hangi oturuma ait olduğunu anlayarak ona özel saklanan verileri kullanabilir.
2. Session Başlatma
Bir oturum başlatmak için session_start()
fonksiyonu kullanılır. Bu fonksiyon, mevcut bir oturumu yeniden başlatır veya yeni bir oturum oluşturur.
Örnek:
// Oturumu başlat
session_start();
// Kullanıcı adı oturum değişkeni olarak saklanır
$_SESSION["kullanici_adi"] = "Ahmet";
// Oturum başlatıldığını onaylayalım
echo "Oturum başlatıldı ve kullanıcı adı: " . $_SESSION["kullanici_adi"];
Bu örnekte, oturum başlatılır ve "kullanici_adi"
anahtarıyla bir oturum değişkeni oluşturulur.
3. Session Verisi Okuma
Oturum başlatıldıktan sonra, oturuma kaydedilen veriler $_SESSION
süper global dizisinden okunabilir.
Örnek:
session_start(); // Oturumu başlat
if(isset($_SESSION["kullanici_adi"])) {
echo "Kullanıcı adı: " . $_SESSION["kullanici_adi"];
} else {
echo "Oturumda kullanıcı adı bulunamadı.";
}
Bu kod, oturumda daha önce saklanmış olan kullanıcı adını kontrol eder ve ekrana yazdırır.
4. Session Verisi Silme
Oturum değişkenlerini silmek için unset()
fonksiyonu kullanılabilir. Ayrıca tüm oturum verilerini silmek için session_unset()
fonksiyonu kullanılabilir.
Belirli Bir Değişkeni Silme:
session_start(); // Oturumu başlat
// Belirli bir oturum değişkenini sil
unset($_SESSION["kullanici_adi"]);
Tüm Oturum Değişkenlerini Silme:
session_start(); // Oturumu başlat
// Tüm oturum değişkenlerini temizle
session_unset();
5. Session Sonlandırma (Yok Etme)
Bir oturumu tamamen sona erdirmek için session_destroy()
fonksiyonu kullanılır. Bu, oturuma ait tüm verileri sunucudan siler, ancak session_destroy()
çerezleri otomatik olarak temizlemez.
Örnek:
session_start(); // Oturumu başlat
// Oturumu sona erdir
session_destroy();
echo "Oturum sona erdirildi.";
Bu kod, oturumu sona erdirir ve oturuma ait tüm veriler silinir.
6. Session ve Güvenlik
-
Session Hijacking: Oturum kimliği (session ID) çalınarak kullanıcının oturumu kötüye kullanılabilir. Bu nedenle, oturum kimliği güvenli bir şekilde yönetilmelidir.
-
HTTPS Kullanımı: Eğer mümkünse, oturum kimlikleri yalnızca güvenli bağlantılarda (
HTTPS
) gönderilmelidir. Bunu sağlamak için oturumu başlatırkensecure
bayrağı kullanılır. -
Session Fixation: Bir saldırganın sabit bir oturum kimliği ile bir kullanıcıyı kandırarak o oturumu ele geçirmesi durumudur. Bu riskten korunmak için oturum kimliğini önemli işlemlerden sonra yenilemek iyi bir uygulamadır. PHP’de
session_regenerate_id()
fonksiyonu ile oturum kimliği yenilenebilir.
session_start(); // Oturumu başlat
// Oturum kimliğini yenile
session_regenerate_id(true);
7. Session Ayarları
Oturumlarla ilgili bazı ayarlar php.ini
dosyasında veya kod içerisinde yapılabilir:
-
session.gc_maxlifetime
: Bir oturumun ne kadar süreyle geçerli olacağını belirler. -
session.cookie_lifetime
: Oturum çerezi ne kadar süre boyunca saklanacak. -
session.use_cookies
: Oturum için çerez kullanılacak mı.
// Kod içinde oturum ayarı yapmak
ini_set('session.cookie_lifetime', 3600); // 1 saat boyunca çerez geçerli olacak
8. Oturumun Avantajları ve Kullanım Alanları:
- Kullanıcı Oturumları: Kullanıcıların giriş yapıp yapmadığını kontrol etmek ve oturum boyunca verileri saklamak.
- Sepet Yönetimi: E-ticaret sitelerinde kullanıcıların sepet bilgilerini oturum süresince saklamak.
- Çok Aşamalı Formlar: Birden fazla adımdan oluşan formlarda, verileri her adımda oturumda saklayarak form sürecini yönetmek.
PHP oturumları, kullanıcılar arası veriyi izlemek, kullanıcı girişini doğrulamak ve oturum bilgilerini saklamak için etkili ve güvenli bir yöntem sunar. Özellikle sunucu tarafında saklandığı için çerezlere göre daha güvenli bir seçenek olarak kabul edilir.