Php Session (Oturum Nesneleri) Kullanımı

php-session

Php Session (Oturum)

Php session(oturum) nesnesi kullanıcıları geçici olarak hatırlamak için kullanılır. Örneğin sosyal medya hesaplarımıza giriş yaptığımızda sunucu tarafında bir oturum nesnesi oluşturulur ve çıkış yaptığımızda oturum nesnesi silinir. Böylece kullanıcının giriş ve çıkış işlemleri gerçekleştirilmiş olur. Oturum nesnelerinin özelliklerini kısaca aşağıdaki listeden inceleyin.

  • Oturum nesneleri sadece tanımlanan kullanıcı için geçerlidir. Her türlü veri saklanabilir. 
  • Oturum nesneleri sunucu tarafında saklanır.
  • Oturum nesnelerine erişmek ve değiştirmek mümkün değildir. Fakat önemli verilerin saklanmaması gerekir.(TC, Parola vs.)
  • Oturum nesneleri tarayıcı kapatıldığında otomatik olarak silinir.

Php session(oturum) nesneleri çerez nesnelerine göre daha güvenlidir. Fakat oturum nesneleri ile çalışmak için mutlaka session_start() fonksiyonu oturum nesnelerinden önce yazılmalıdır. Yani oturum başlatılmalıdır denebilir. Oturum başlatılmamış bir sayfa üzerinde oturum nesneleri geçerli değildir ve boş değer döndürürler.

Session (Oturum) Oluşturma

Bir oturum nesnesi oluşturmak için $_SESSION küresel değişkeni kullanılır. Küresel değişkene oturum nesnesinin adı ve değeri atanarak işlem yapılır.

Örnek kullanım:

<?php 
session_start(); /* Oturum mutlaka başlatılmalıdır. */
$_SESSION["meyve"] = "Elma";
$_SESSION["telefon] = "555-555-5555";
?>

Yukarıdaki örnekte oturumu başlattık ve iki tane alakasız oturum nesnesi tanımladık. Başta anlattığım gibi küresel değişkene isimleri ile birlikte değer ataması yaptık.

Session (Oturum) Değerine Erişim

Php session(oturum) nesneleri erişmek için tıpkı tanımlamada olduğu yine $_SESSION küresel değişkenini kullanıyoruz. Eğer erişmek istediğimiz isimde bir oturum nesnesi yok ise boş(null) değer döndürülür. Ayrıca index.php sayfasında oluşturduğumuz oturum nesnesine farklı sayfalardan da erişmek mümkündür.

Örnek kullanım:

<?php 
session_start();
echo $_SESSION["meyve"] ."<br/>";
echo $_SESSION["telefon"];
?>

En başta oluşturduğumuz oturum nesnelerine yukarıdaki örnek koddaki gibi erişmek mümkündür. Burada meyve ve telefon oturum nesnelerinin değerleri ekrana yazdırılacaktır.

Session (Oturum) Tanımlı Mı?

Bir $_SESSION global değişkeni ile işlem yapmadan önce oturumun varlığını kontrol etmemiz gerekir. Bir şeyin tanımlı olup olmadığını kontrol etmek için isset() php fonksiyonunu kullanırız.

Örnek kullanım:

<?php
session_start();
$_SESSION["uye"] = "Mustafa Azak";
if(isset($_SESSION["uye"])){
   echo $_SESSION["uye"];
}else{
   echo "Uye oturumu mevcut değil";
}
?>

Yukarıda isset() fonksiyonu ile üye isimli bir oturum nesnesi olup olmadığını kontrol ettik. Oturum tanımlanmamış ise else bloğu çalışacaktır. Eğer üye isimli oturum tanımlanmış ise sakladığı değer yazdırılacaktır. Aynı kullanımı empty() fonksiyonu ile yapalım.

Örnek kullanım:

<?php
session_start();
$_SESSION["uye"] = "Mustafa Azak";
if(empty($_SESSION["uye"] != true)){
    echo $_SESSION["uye"];
}else{
    echo "Uye oturumu mevcut değil";
}
?>

Yukarıdaki iki örnekte aynı işlemi yapmaktadır. Oturum nesnesi boş ya da sıfırdan farklı bir değere sahip olduğunda false değerini döndürür. false değeri döndüğünde uye isimli oturum nesnesi ekrana yazdırılacaktır. 

Oturum nesnelerinin varlığını kontrol ederken isset() fonksiyonu daha iyi sonuçlar elde etmemizi sağlayacaktır.

Aşağıdaki görselde oturum nesnesini temsil eden çerezi görebilirsiniz. Burada oturum nesnesinin sakladığı verinin şifrelenmiş olduğunu ve geçerliliğinin tarayıcı kapatılana kadar olduğunu gözlemleyebiliriz.

php-session-tarayici-gorunumu

Session (Oturum) Süresi Belirleme

Php session(oturum) nesnelerinde süre tanımlanmadığında varsayılan süre olarak 1440 saniye atanır. Eğer kullanıcı 20 dakika boyunca (1440 saniye) herhangi bir işlem yapmaz ise oluşturulan oturum nesnesi otomatik olarak silinir. Kullanıcı işlem yaptığı takdirde geri sayım tekrar 20 dakikadan başlar.

Örnek kullanım:

<?php
error_reporting(0);
session_destroy();
echo "Varsayılan Oturum :". ini_get('session.gc_maxlifetime'). " saniye <br/>";
ini_set('session.gc_maxlifetime', 240);
echo "Yeni Oturum :". ini_get('session.gc_maxlifetime'). " saniye";
?>

Yukarıdaki örneği yerel sunucumuzda çalıştırdığımızda ilk işlemin sonucu Varsayılan Oturum : 1440 saniye  olacaktır. Diğer işlemde ise Yeni Oturum : 240 saniye yeni oturum süresinin değiştiğini göreceksiniz. Burada yeni oturum süresi belirlemeden önce eğer önceden bir oturum başlatılmış ise tüm oturumları session_destroy() fonksiyonu ile sonlandırmanız gerekir. Mevcut oturumlar sonlandırılmadığında yazdığımız kod çalışmayacaktır.

Session (Oturum) Silme

Oluşturduğumuz oturum nesnelerini işimiz bittiğinde silmemiz gerekir. Örneğin bir üye için oluşturduğumuz oturum nesnelerini kullanıcı oturumu kapattığında silmemiz gerekir. Oturum nesnesini silmediğimizde kullanıcı sistem üzerinde hala oturumu açık görünür. Oturum nesnelerini tek tek ismi ile ya da toplu olarak silebiliriz. Tek bir oturum nesnesini ismi ile silmek için unset() php fonksiyonunu kullanırız.

Örnek kullanım:

<?php
session_start();
unset($_SESSION["uye"]);
echo $_SESSION["uye"];
?>

Yukarıdaki örnek kullanımda unset() ile ismini belirttiğimiz oturum nesnesini sildik.

Örnek kullanım:

<?php
session_start();
unset($_SESSION["uye"], $_SESSION["meyve"]);
echo $_SESSION["uye"] . "<br/>";
echo $_SESSION["meyve"];
?>

unset() ile birden fazla oturum nesnesi silmek mümkündür. Yukarıdaki örnekte ismini belirttiğimiz oturum nesnelerini virgül ile ayırarak unset() fonksiyonu içinde kullandık. Oturum nesneleri silindikten php yorumlayıcı bize uyarı türünde hata mesajı verecektir. 

Tüm oturum nesnelerini tek bir satır kod ile silmenin mümkün olduğunu yukarda söylemiştim bunun için session_destroy() php fonksiyonunu kullanıyoruz. Bu fonksiyon oluşturulan tüm oturum nesnelerini tek seferde silmek için kullanılır.

Örnek kullanım:

<?php 
session_start();
session_destroy();
?>

Yukarıdaki örnekte session_destroy() php fonksiyonunun kullanımını gösterdim. Eğer burada ilk satırda session_start() php fonksiyonunu kullanmazsak php yorumlayıcısı uyarı türünde bir hata verecektir.

Genel olarak oturum nesnelerinin kullanımları bu şekildedir. Php Pdo Oturum Açma konusundan oturum nesnesinin kullanımı hakkında daha detaylı bilgiye sahip olabilirsiniz.

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir