irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
HTTP protokolü "stateless" (durumsuz) bir yapıdır; yani tarayıcı sayfayı her yenilediğinde sunucu sizin kim olduğunuzu unutur. Kullanıcının giriş yapmış kalmasını veya sepete eklediği ürünlerin kaybolmamasını sağlamak için Session ve Cookie mekanizmalarını kullanırız.
Session verileri sunucu tarafında saklanır ve tarayıcı kapatıldığında (aksi belirtilmedikçe) silinir. Hassas veriler (Kullanıcı ID, Yetki Seviyesi vb.) için en güvenli yoldur.
Önemli: Herhangi bir session işlemi yapmadan önce sayfanın en başında session_start() fonksiyonu çağrılmalıdır.
Cookie'ler kullanıcının bilgisayarında saklanır. Belirli bir süre (günler, aylar) boyunca geçerli kalabilirler. "Beni Hatırla" özellikleri veya tema tercihleri için idealdir.
Özetle; kullanıcı login bilgileri gibi kritik veriler için Session, kullanıcının arayüz tercihleri veya "Beni Hatırla" gibi uzun süreli ama kritik olmayan bilgiler için Cookie tercih edilmelidir. Profesyonel bir sistemde her iki mekanizma da birbirini tamamlayacak şekilde kullanılır.
1. Session (Oturum) Kullanımı
Session verileri sunucu tarafında saklanır ve tarayıcı kapatıldığında (aksi belirtilmedikçe) silinir. Hassas veriler (Kullanıcı ID, Yetki Seviyesi vb.) için en güvenli yoldur.
Önemli: Herhangi bir session işlemi yapmadan önce sayfanın en başında session_start() fonksiyonu çağrılmalıdır.
PHP:
<?php
session_start(); // Oturumu başlat
// Veri atama
$_SESSION['kullanici_id'] = 45;
$_SESSION['kullanici_adi'] = "Ahmet";
// Veriye erişim
echo "Hoş geldin, " . $_SESSION['kullanici_adi'];
// Belirli bir veriyi silme
unset($_SESSION['kullanici_adi']);
// Tüm oturumu sonlandırma (Çıkış yapıldığında kullanılır)
session_destroy();
?>
2. Cookie (Çerez) Kullanımı
Cookie'ler kullanıcının bilgisayarında saklanır. Belirli bir süre (günler, aylar) boyunca geçerli kalabilirler. "Beni Hatırla" özellikleri veya tema tercihleri için idealdir.
PHP:
<?php
// Çerez Tanımlama (setcookie)
// Parametreler: İsim, Değer, Süre (saniye cinsinden), Yol
$sure = time() + (60 * 60 * 24 * 30); // 30 gün geçerli
setcookie("tema_tercihi", "dark_mode", $sure, "/");
// Çerezi Okuma
if(isset($_COOKIE['tema_tercihi'])) {
echo "Tercih ettiğiniz tema: " . $_COOKIE['tema_tercihi'];
}
// Çerezi Silme (Süresini geçmiş bir zamana ayarlayarak)
setcookie("tema_tercihi", "", time() - 3600, "/");
?>
Session ve Cookie Arasındaki Temel Farklar
| Özellik | Session | Cookie |
|---|---|---|
| Saklama Yeri | Sunucu (Server) | Tarayıcı (İstemci) |
| Güvenlik | Yüksek | Düşük (Değiştirilebilir) |
| Kapasite | Sınırsız (Sunucuya bağlı) | Sınırlı (Maks. 4KB) |
| Kullanım Ömrü | Tarayıcı kapanınca biter | Belirlenen süre kadar kalır |
3. Güvenlik İpuçları
[] Cookie Güvenliği: Hassas verileri (şifre, kredi kartı vb.) asla çerezlerde saklamayın. Çerez tanımlarken httponly ve secure bayraklarını kullanarak XSS saldırılarını engelleyin.
[] Session Fixation: Giriş işlemi başarılı olduğunda session_regenerate_id() fonksiyonunu kullanarak oturum ID'sini yenileyin.- Veri Temizliği: Kullanıcıdan gelen çerez verilerini her zaman htmlspecialchars() veya filtreleme fonksiyonlarından geçirin.
Sonuç
Özetle; kullanıcı login bilgileri gibi kritik veriler için Session, kullanıcının arayüz tercihleri veya "Beni Hatırla" gibi uzun süreli ama kritik olmayan bilgiler için Cookie tercih edilmelidir. Profesyonel bir sistemde her iki mekanizma da birbirini tamamlayacak şekilde kullanılır.