PHP ile oturum yönetimi, kullanıcı bilgilerini geçici veya kalıcı olarak saklamak için kullanılır. Session (oturum) ve Cookie (çerez) olmak üzere iki temel yöntem vardır.
Bu rehberde session ve cookie kavramlarını, nasıl kullanıldıklarını ve güvenli oturum yönetimi için dikkat edilmesi gereken noktaları detaylı bir şekilde ele alacağız.
1. PHP Oturum (Session) Nedir?
PHP session (oturum), kullanıcının ziyaret ettiği sayfalar arasında veri taşımak için kullanılan geçici bir saklama yöntemidir.
- Oturum verileri sunucu tarafında saklanır.
- Kullanıcı tarayıcısını kapattığında veya belirli bir süre işlem yapılmazsa oturum sonlanır.
- Kullanıcı giriş işlemleri, alışveriş sepeti yönetimi gibi dinamik işlemlerde kullanılır.
2. PHP Session Kullanımı
PHP’de session kullanmadan önce session_start();
fonksiyonunu çağırmamız gerekir.
a) Oturum Başlatma ve Veri Saklama
<?php
session_start(); // Oturumu başlat
$_SESSION["kullanici_adi"] = "AliYilmaz"; // Kullanıcı adını oturumda sakla
$_SESSION["email"] = "[email protected]"; // E-posta bilgisini oturuma ekle
echo "Oturum başlatıldı ve veriler saklandı!";
?>
- session_start(); oturumu başlatır.
- $_SESSION[] değişkeni ile oturuma veri eklenir.
b) Oturumdan Veri Okuma
Başka bir sayfada oturumu tekrar başlatarak saklanan veriyi çağırabiliriz.
<?php
session_start(); // Oturumu başlat
if(isset($_SESSION["kullanici_adi"])) {
echo "Hoş geldin, " . $_SESSION["kullanici_adi"];
} else {
echo "Giriş yapmadınız!";
}
?>
- isset() fonksiyonu ile oturumun olup olmadığını kontrol edebiliriz.
- Eğer oturum açık değilse, kullanıcıyı yönlendirebiliriz.
c) Oturumu Sonlandırma (Çıkış Yapma)
Oturumu tamamen silmek için session_destroy();
ve unset();
kullanılır.
<?php
session_start();
session_unset(); // Oturum değişkenlerini temizle
session_destroy(); // Oturumu tamamen sonlandır
echo "Oturum sonlandırıldı!";
?>
session_unset();
oturum içindeki tüm değişkenleri siler.session_destroy();
oturumu kapatır.
3. PHP Cookie (Çerez) Kullanımı
Cookie (çerezler), oturum verilerini tarayıcıda saklamak için kullanılır.
- Sunucu tarafında değil, istemci (kullanıcı) tarafında saklanır.
- Kullanıcı tarayıcısını kapatsa bile belirlenen süre boyunca çerezler saklanır.
- Kullanıcı tercihleri veya kalıcı giriş bilgileri gibi durumlarda kullanılır.
a) Cookie Oluşturma
setcookie();
fonksiyonu ile çerez oluşturabiliriz.
<?php
$ad = "kullanici";
$deger = "AliYilmaz";
$sure = time() + (86400 * 7); // 7 gün boyunca saklanacak
setcookie($ad, $deger, $sure, "/"); // Çerezi ayarla
echo "Çerez oluşturuldu!";
?>
setcookie("isim", "değer", süre, "/");
şeklinde kullanılır.- time() + (86400 * 7) = Şu andan itibaren 7 gün sonra silinecek.
/
parametresi çerezin tüm site boyunca geçerli olmasını sağlar.
b) Cookie Okuma
Tarayıcıda saklanan çerezleri $_COOKIE[]
ile okuyabiliriz.
<?php
if(isset($_COOKIE["kullanici"])) {
echo "Hoş geldin, " . $_COOKIE["kullanici"];
} else {
echo "Çerez bulunamadı!";
}
?>
- isset() ile çerezin var olup olmadığını kontrol edebiliriz.
c) Cookie Silme
Bir çerezi silmek için süresini geçmiş bir zaman olarak ayarlamamız yeterlidir.
<?php
setcookie("kullanici", "", time() - 3600, "/"); // Süresini geçmiş bir değer atayarak sil
echo "Çerez silindi!";
?>
- time() – 3600 ile çerezin süresi geçmiş olur ve tarayıcıdan silinir.
4. PHP Session ve Cookie Arasındaki Farklar
Özellik | Session | Cookie |
---|---|---|
Saklama Yeri | Sunucu | Kullanıcı Tarayıcısı |
Güvenlik | Daha güvenli | Daha az güvenli |
Süreklilik | Tarayıcı kapanınca sona erer | Belirlenen süre boyunca kalır |
Veri Boyutu | Daha büyük veriler saklanabilir | Küçük veriler için uygundur |
Kullanım Alanı | Giriş işlemleri, alışveriş sepetleri | Kullanıcı tercihleri, hatırlama işlemleri |
- Gizli ve önemli bilgiler için SESSION kullanılır.
- Kullanıcı tercihlerinde COOKIE tercih edilir.
5. Güvenli Oturum Yönetimi İçin İpuçları
✅ Session hijacking (oturum çalma) saldırılarına karşı önlem alın.
session_regenerate_id(true); // Oturum kimliğini değiştirerek güvenliği artır
✅ Çerezlere erişimi sınırlandırın (HTTPOnly ve Secure ayarı yapın).
setcookie("guvenliCerez", "deger", time() + 3600, "/", "", true, true);
true, true
değerleri, sadece HTTPS üzerinden erişim ve JavaScript erişimini engelleme sağlar.
✅ Oturumu belirli bir süre sonra sonlandırın.
if(time() - $_SESSION['login_time'] > 1800) { // 30 dakika sınır
session_destroy();
header("Location: logout.php");
}
✅ Kullanıcı girişlerinde şifreleri asla çerezde saklamayın!
$_SESSION["user_id"] = $kullanici_id; // Şifre yerine kullanıcı ID'si saklanmalı
6. Özet ve Sonuç
Bu rehberde PHP oturum yönetimi konusunu detaylı bir şekilde ele aldık.
- Session, geçici oturum verilerini sunucuda saklamak için kullanılır.
- Cookie, kullanıcı bilgilerini tarayıcıda uzun süre saklamak için kullanılır.
- Session, güvenlik açısından daha avantajlıdır.
- Cookie ise kullanıcı tercihleri gibi basit veriler için uygundur.