Session (oturum) kullanarak kullanıcının siteyi gezerken yaptığı aktiviteleri kontrol etmek mümkündür. Çalışma prensibi kısaca şöyledir; bir siteyi ziyaret ettiğinizde, server (sunucu) tarafından tarayıcınıza bir session ID değeri gönderilir (session ID değerleri her kullanıcıya özgüdür). Tarayıcınız bu session ID değerini bilgisayardaki cookie'lerde (çerezlerde) aramaya başlar. Siteyi ilk defa ziyaret ettiğiniz için böyle bir değer bulamaz ve bu session ID değerini hemen o siteye ait çerezlere kaydeder. Aynı zamanda sunucu tarafında da session bilgileriniz (session ID'niz, IP adresiniz, son giriş zamanınız, kullanıcı adınız vb.) kaydolunur. Bundan sonra site üzerinde yapılan bütün gezinmelerde bu session ID üzerinden veri gönderimi gerçekleştirilir. Sayfalar arası geçişlerde eğer tarayıcı çerezlerde session ID değerini bulursa, sunucu tarafından tanınmış olursunuz ve sunucu tarafındaki bilgileriniz güncellenir (ayar yapılmışsa session ID'de yenilenebilir). Eğer tarayıcı çerezlerde session ID değerini bulamazsa (çerezleri silme, çerezlerin zaman aşımına uğraması vb. gibi nedenlerle) yeni bir session ID değeri çerezlere kaydedilir. Böylelikle döngü devam eder. Daha detaylı bilgileri bu yazıda okuyabilirsiniz.
Session Oluşturma ve Veri Ekleme
Session ile veri ekleme işlemlerini yapmadan önce kesinlikle session (oturum) başlatmalıyız. Bu oturumu session_start() fonksiyonu ile yapacağız. session_start() fonksiyonu W3 kurallarına göre sayfanın en başına html etiketlerinden önce yazılmalıdır. session_start() fonksiyonu, session ID değerinin tanımlanıp tanımlanmadığını kontrol eder. Eğer tanımlı session ID değeri yoksa bize ait yeni session ID değerini oluşturur. Eğer tanımlı session ID değeri varsa bunun üzerinden işlemler yapılmaya devam eder.
Session'a veri eklemek için $_SESSION global dizisini kullanacağız.
<?php
// Session başlatır
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Session'a veri ekleme
$_SESSION["kullanici_adi"] = "x";
$_SESSION["sepet"] = "laptop";
?>
</body>
</html>
Session Verilerine Ulaşma
Session verilerine ulaşmak için yine $_SESSION global dizisini kullanacağız.
<?php
// Session başlatır
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Sessionda bulunan verileri yazdırır
echo "Kullanıcı Adı: " . $_SESSION["kullanici_adi"]; // Çıktı: Kullanıcı Adı: x
echo "Sepetiniz: " . $_SESSION["sepet"]; // Çıktı: Sepetiniz: laptop
?>
</body>
</html>
Session Kontrol Etme
Session kontrolünü isset() ile yapacağız.
if(isset($_SESSION["kullanici_adi"]))
echo "Session Kaydı Var";
else
echo "Session Kaydı Yok";
//Çıktı: Session Kaydı Var
Session Verilerini Silme
Session verilerini silmek için unset() ve session_unset() fonksiyonlarını kullanacağız. Tek olarak session verisini silmek için unset(), bütün verileri silmek için session_unset() fonksiyonunu kullanabiliriz. Session verileri silinmesine rağmen oturum hala açıktır, yeni veriler kaydedilebilir.
unset("sepet"); // sepet adındaki oturum bilgilerini siler
session_unset(); // bütün oturum bilgilerini siler (kullanici_adi ve sepet)
Session Oturumunu Sonlandırma
Session oturumunu sonladırmak için session_destroy() fonksiyonunu kullanacağız. Bu sayede oturum kapanacağı için bütün session verileri de silinmiş olacak.
session_destroy();
Session ID Değerini Öğrenmek
Gelişmiş tarayıcılar aracılığıyla session ID değerini öğrenmek çok basitleşti. Chrome kullanıyorsanız mouse ile sağ tıklayıp 'Öğeyi Denetle', Mozilla Firefox kullanıyorsanız 'Öğeyi İncele' yaparak öğrenebilirsiniz. PHP ile öğrenmek istiyorsanız session_id() fonksiyonunu kullanabilirsiniz.
echo session_id();
YORUMLAR
if(veritabaniid == 1)
admin için session oturumu oluşturma kodları
yönlendir admin.php
else
yönlendir index.php
if(isset ... session kontrolü)
admin sayfası kodları
else
hata mesajı
yönlendir index.php