Php Session Kullanımı

Php Session Kullanımı Oturum Açma

Php session (oturum) nesneleri sitemizi ziyaret eden kullanıcıları geçici olarak hatırlamak için kullanıyoruz. Tarayıcı açık olduğu sürece oturum nesneleri sunucuda aktif kalır fakat tarayıcı kapatıldığında oturum nesnesi otomatik olarak silinir. Örneğin sosyal medya hesabınıza giriş yaptığınızda sunucu tarafında bir oturum nesnesi oluşturulur. Hesabınızdan çıkış yaptığınızda veya tarayıcı kapattığınızda oturum nesnesi silinir ve tekrar giriş yapmanız istenir.

  • Session (oturum) nesneleri sadece tanımlanan kullanıcı için geçerlidir. Her türlü veri saklanabilir.
  • Session (oturum) nesneleri sunucu tarafında saklanır.
  • Session (oturum) nesnelerine çerezler gibi erişmek ve değiştirmek mümkün değildir. Fakat önemli verilerin saklaması güvenlik açısından tavsiye edilmez.
  • Session (oturum) nesneleri tarayıcı kapatıldığında yada oturum sonlandırıldığında silinir.

Php session(oturum) nesneleri, cookie (çerez) nesnelerine göre daha güvenlidir. Fakat oturum nesneleri ile çalışmak için mutlaka session_start fonksiyonu ile oturum nesnelerini kullanacağımızı bildirmemiz gerekiyor.

Php Session (Oturum) Oluşturma

Oturum nesnesi oluşturmak için $_SESSION süper global değişkenini kullanıyoruz. Süper global değişkene oturum nesnesinin adı ve değeri atanarak işlem yapıyoruz.

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

Yukarıda iki adet oturum nesnesi tanımlamasını yaptık bu oturum nesnelerinin değerleri erişmek için yine $_SESSION süper global değişkenini oturum nesnesinin adı ile kullanıyoruz. Eğer erişmek istediğimiz isimde bir oturum nesnesi tanımlanmamış ise boş (null) değer döndürür. Herhangi bir sayfada oluşturduğumuz oturum nesnelerine projemizdeki diğer tüm sayfalardan erişebiliyoruz.

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

Session(Oturum) Tanımlı Mı?

$_SESSION süper global değişkeni ile işlem yapmadan önce işlem yapacağımız session(oturum) nesnesinin varlığını kontrol etmemiz gerekir. Böylece program akışı esnasında olası hataların önüne geçebiliriz.

Program akışında bir şeyin tanımlı olup olmadığını isset fonksiyonu ile kontrol ediyoruz. Eğer kontrol ettiğimiz değişken tanımlı ise true, tanımlı değilse false değerini dönecektir.

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

Yukarıdaki basit örnekte oturum nesnesi tanımlaması gerçekleştirdik ve tanımlı olup olmadığını kontrol ettik. Kod akışına göre oturum nesnesi tanımlı olduğu için içerisindeki veri ekrana yazdırılacak. Aynı kontrolü empty fonksiyonu ile de yapabiliriz.

Oturum nesnesi boş yada sıfırdan farklı bir değere sahip olduğunda false değerini verir. Bu nedenle aşağıdaki kontrolümüzde oturum nesnemiz sıfırdan farklı bir değere sahip olduğu için false değeri döndürülecektir ve ekrana değeri yazılacaktır.

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

isset yada empty fonksiyonu kullanmak tercih meselesidir ancak isset fonksiyonunu kullanmanız daha doğru sonuçları elde etmenizi sağlayacaktır.,

Php Session (Oturum) Süresi Belirleme

Php session nesnelerinde süre tanımlaması yapılmadığında oturumun sonlandırılması için varsayılan süre 1440 saniyedir. 1440 saniye boyunca hiç bir işlem yapılmaması durumunda oturum otomatik olarak sonlandırılır. Kullanıcı işlem yaptığı taktirde geri sayım baştan başlar.

<?php
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";
?>

ini_get fonksiyonu ile varsayılan değeri alıp ekrana yazdırıyoruz. ini_set fonksiyonu ile yeni bir atama yaparak oturum süresini güncelliyoruz ancak oturum süresini güncellemeden önce mevcut olan tüm oturumların sonlandırılması gerekir. Bunun için session_destroy fonksiyonunu kullanarak mevcut olan tüm oturumları sonlandırdık. Eğer mevcut oturumlar sonlandırılmaz ise varsayılan süreyi değiştirme kodumuz çalışmayacaktır.

Php Session(Oturum) Sonlandırma – Silme

Kullanıcı giriş yaptığı sistemden çıkış yaptığında oturumu sonlandırmamız gerekiyor. Çünkü kullanıcı tarayıcıyı kapatmadan siteyi terk edip farklı sitelere girmiş olsa bile bizim sitemizdeki oturum nesnesi tarayıcı açık olduğu için aktif kalacaktır. Bu nedenle oturum nesnesini sonlandırmalıyız.

Oturum nesnelerini tek tek isimleri ile yada toplu olarak silebiliriz. Tek bir oturum nesnesinin silinmesi için unset fonksiyonunu kullanıyoruz. Tüm oturum nesnelerini silmek için ise session_destroy fonksiyonunu kullanıyoruz.

<?php
/* uye isimli oturum nesnesini sonlandırmak için */
unset($_SESSION["uye"]);
echo $_SESSION["uye"];

/*Birden fazla oturum sonlandırmak için virgül ile ayırıyoruz */
unset($_SESSION["uye"], $_SESSION["meyve"]);
echo $_SESSION["uye"] . "<br/>";
echo $_SESSION["meyve"];

/*Tüm oturumları sonlandırmak için */
session_destroy();
?>

Bir Cevap Yazın