Php Session Kullanımı
Session(oturum), kullanıcının oturum verilerini yöneten; sunucu ile istemci arasındaki verileri oturum açık olduğu sürece geçici olarak saklayan bir mekanizmadır. Kullanıcı başarılı bir şekilde giriş yaptığında, bir session ve bir session cookie oluşturulur. Bu session cookie, PHPSESSID olarak adlandırılan benzersiz bir session ID tutar. PHPSESSID, kullanıcının sunucu tarafından hatırlanmasını ve gerektiğinde sunucu ile veri alışverişi yapabilmesini sağlar.
Session'a ihtiyaç duymamızın nedeni, HTTP'nin stateless bir protokol olmasıdır. Yani, istemci ve sunucu arasındaki iletişim her işlemden sonra tamamen kesilir ve bilgiler unutulur. Bu, kullanıcıların oturum bilgileri veya kişisel bilgilerini saklamak için bir mekanizmaya ihtiyaç duyduğumuz anlamına gelir.
Örneğin, kullanıcı bir sosyal medya hesabına ilk kez giriş yaptığında, sunucu tarafından session oluşturulur ve sunucunun bu oturumu tanıması için bir oturum kimliği atanır. Kullanıcı bu oturum üzerinden sunucuya veri depolayabilir. Kullanıcının sonraki ziyaretlerinde kullanıcı adı ve şifre ile bu oturum ilişkilendirilir. İlişkilendirilen oturum önceden oluşturulmuş PHPSESSID adındaki session cookieyi sunucuya gönderir ve sunucu kimlikle ilişkilendirilen oturumu bulur, depolanan resim, yazı vb. veriler sunucudan getirilir.
Session Başlatma
Session kullanılacaksa öncelikle session_start fonksiyonu ile başlatılması gerekiyor aksi takdirde oturumla ilgili işlemler gerçekleştirilemez, program hata verir. Session mekanizması bu fonksiyon ile tetiklenir.
session_start();//Bu fonksiyon sayfanın en başında başlatılmalı.
$_SESSION['key'] = 'Value';Session Oluşturma
Session oluşturmak için $_SESSION süper globali kullanılarak key-value çifti ile atama yapılır.
session_start();
$_SESSION['username'] = 'Yazgul';Session Verilerine Erişme
Oturum verilerine $_SESSION['key'] şeklinde erişebiliriz.
session_start();
$_SESSION['username'] = 'Yazgul';
echo isset($_SESSION['username']) ? $_SESSION['username'] : 'Kullanıcı bulunmadı!';
//username adında bir session varsa ekrana yazdır yoksa 'Kullanıcı bulunmadı!' yaz.Session Silme
Session silme işlemi için kullanabileceğimiz üç farklı yöntem var.
session_destroy(): Oturumu sonlandırır ve tüm sessionları siler. Genellikle çıkış işlemi için kullanılır.
session_unset(): Oturumu sonlandırmaz ancak oturum açtıktan sonra saklanan session verilerini siler yani mevcut oturumla ilgili verileri siler, oturumu sonlandırmaz. Örneğin kullanıcı bir E-ticaret sitesine giriş yaptı ve sepete ürün ekledi. Kullanıcı, sepet içindeki ürünleri temizlemek isterse, bu fonksiyon ile sepet içeriği temizlenebilir. Bu durum, kullanıcının oturumunu etkilemez.
unset(): Belirtilen anahtara sahip session verisini siler. Bu yöntemle her session verisini tek tek silmek gerekir.
$_SESSION['name'] = "Yazgül";
$_SESSION['password'] = "123456";
unset($_SESSION['name']);
unset($_SESSION['password']);Session ve Cookie Arasındaki Farklar
- Session verileri sunucuda saklanır, cookie verileri ise metin dosyası olarak istemcide saklanır. Üyelik işlemleri gibi hassas işlemlerde verinin sunucuda saklanması daha güvenli olduğu için session tercih edilir.
- Session için zaman ayarı yapılmaz, tarayıcı kapandığında veya çıkış yapıldığında oturum silinir; cookie ise belirlenen tarihe kadar verileri tutabilir.
- Session sınırsız veri depolayabilir, cookie ise 4 kb veri depolayabilir.
- Session büyük veri parçaları ve hassas işlemleri depolamak için kullanılabilir; cookie ise oturum durumu, kullanıcı tercihleri gibi küçük verileri saklamak için kullanılabilir.
Session konusunu basit bir giriş yap örneği ile sonlandıralım.
login.php
session_start();
//Kullanıcı adı ve şifreyi veritabanından çektiğimizi varsayıyoruz.
$db_username = "Yazgul";
$db_password = "123456";
//Kullanıcıdan gelen giriş bilgileri
$username = $_POST['username'];
$password = $_POST['password'];
//Veritabanındaki username ve password ile formdan gelen bilgiler aynı mı?
if ($username === $db_username && $password === $db_password) {
$_SESSION['username'] = $db_username;
$_SESSION['login'] = true;
header('Location: home.php');//home sayfasına yönlendir.
exit();
} else {
echo "Kullanıcı adınız veya şifreniz hatalı";
}Bu sayfaya index.php sayfasındaki formdan geliyoruz. Veritabanındaki username ve password ile formdan gelen username ve password aynıysa, sunucu session_start fonksiyonu ile oturum başlatır. Bilgiler eşleşmiyorsa oturum başlatılmaz, hata mesajı döndürülür. Login değişkenine true değerini atadım çünkü sadece giriş yaptıktan sonra ulaşılabilecek sayfalara giriş yapmadan ulaşılıp ulaşılmadığını kontrol edeceğim. Username değişkenine atadığım değeri giriş yapan kullanıcının adını yazdırmak için atadım.
home.php
<?php
//Bu fonksiyonu programın en başında başlatmalıyız.
session_start();
//Giriş yapılmadan bu sayfaya gelmişse index sayfasına yönlendir.
if($_SESSION['login'] !== true){
header("Location:index.php");
exit();
}
echo "Hoşgeldiniz " . $_SESSION['username'];
?>
<a href="logout.php">Çıkış Yap</a>logout.php
session_destroy(); //oturumu sonlandır.
header("Location:index.php");//form sayfasına yönlendir.
exit();
Yorumlar (0)