Blog Single

Merhabalar, bu makalemde PHP ile Session kullanımı (Oturum Yönetimi) konusuna değineceğim. Yararlı olması dileğiyle.

Öncelikle Session nedir ? ile başlayalım;

  • Session, kullanıcı ile etkileşimli web sitelerinde geçici veri tutma birimlerinden olan çalışma zamanlı yürütülen, veri tutmanın yanı sıra veri güvenliği kısmında da kontrol sağlanabilecek, sunucu tarafından istemci bilgisayar üzerinde bir browser aracılığıyla oturum id'sini tutup, sunucu tarafında ise session bilgilerinin tutulmasını sağlayan bir protokoldür.
  • Session protokolü, cookie'ye göre güvenlidir. Zira, cookie ilgili tarayıcı üzerinde bilgileri saklarken, session bunu yapmaz. Session, session isteğinde bulunan siteye session id gönderir. Aynı zamanda sessionid gönderilen geçici zaman dilimi için, ilgili istemcinin istekte bulunduğu site için, her sitenin kendi sunucusunda session bilgilerinin saklanmasını sağlar. Session bilgilerini, kullanıcı tarafı okuyamaz,değiştiremez, sadece ilgili protokol yardımı ile bir web tarayıcısı ile yorumlanma sağlanır.
  • Session'da, cookie gibi bir yaşam ömrüne sahiptir. Session bir oturum sürebileceği gibi, 1 saat,1 gün, 5 gün gibi bir süre olarak da ayarlandığı takdirde saklanabilir. Oturumun süresinin dolması, session'ın ölmesine sebep olmaktadır. Yada bir web sitesinde oturum kapatma işlemi, oturumun sona ermesi demektir. Oturum, istekte bulunan site için halihazırda açık bir session söz konusu değil ise, yeni bir session id üretir. Web tarayıcısında çerezlerin silinmesi, cookie ve session'ların ölmesi demektir.

PHP ile session kullanımı

  • Session
    • session_start(); ile başlar. Oturumun açık kalması gereken kısmın başlangıcını ifade eder ve Genelde php kodunun en baş kısmında yer alır.
    • session_destroy(); ile biter. Oturumun bitmesi gereken durumda kullanılır. Session destroy tek başına kullanılamaz. önce session_start(); ile başlatılması, daha sonra session_destroy(); ile öldürülmesi gerekir.
  • Session tanımlanması - Session yazma
    • Session kullanımı dizi mantığı ile aynıdır. Köşeli parantez kullanımıyla sağlanılır. $_SESSION[] şeklinde session nesnesi kullanılır. Veri tanımlanması ve değer ataması ise şu şekildedir; $_SESSION["userid"]=1;
  • Session okuma
    • Session okuyabilmenin ön şartı, çağırılmak istenen session için bir isim belirtilmesi ve o ismin session dizisinde değeri null dahi olsa, yer edinmesi gerekmektedir.
    • Session bir dizi gibi çalışır demiştik, bir dizinin tüm elemanlarını listelemek için 2. örneğe göz atınız.
    • Örneğin;
      • echo $_SESSION["kullanici_adi"];
        • Eğer kullanici_adi için daha önce bir session name ataması yapmadıysak, bu bir hatadır.
      • echo $_SESSION[];
        • Bu kullanım da yanlıştır.
      • $_SESSION["kullanici_adi"]="şerif";
        • yada
      • $_SESSION["kullanici_adi"]="";
      • echo $_SESSION["kullanici_adi"];
        • Tanımlama yaptıktan sonraki bu kullanım doğrudur.
    • Örnek 2;
      • var_dump($_SESSION);
        • ile session'a ait öğelere erişebileceğiniz gibi.
      • foreach ($_SESSION as $key => $value) {
          echo $key."-->".$value."
        ";
        }
        • ile de key-value değerlerini foreach döngüsündeki örnek ile de görebilirsiniz.
  • Session ile Login - Logout örneği
    • HTML kısmı için;
      • form action="giris.php" method="post"
      • input type="text" name="kullanici_adi"
      • input type="submit" value="Login"
      • form
    • PHP kısmı için;
      • session_start();
      • if($_POST){ // Post işlemi olmuş ise
      • if(isset($_POST['kullanici_adi'])){ // isset ile de içerisinde veri ataması yapılıp yapılmadığını kontrol edebilirsiniz.
      • $username = $_POST['kullanici_adi'];
      • echo "Hoşgeldiniz!";
      • echo "a href="cikis.php"Çıkış";
      • }else{
      • echo "Hoşgelmediniz.";
      • }
      • }
    • cikis.php için;
      • session_start(); 
      • session_destroy();
      • header("Location: index.php"); // yine anasayfa yada giriş sayfasına yönlendirebilirsiniz.
  • Session id
    • Mevcut session id'sini bilmek istediğiniz durumlar olabilir. Bunun için;
      • session_id(); ile bu değeri çekebilirsiniz.

Yararlı olması dileğiyle.

Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın