PHP – Sessions

sessionPHP dilinde Session , bir kullanıcı için ayar değişiklikleri ve hakkındaki bilgileri , almak ve özelleştirmek için kullanılır.Session değişkenleri ,sadece tek kullanıcı hakkında veri tutar ve işlem yapabilir ayrıca bütün sayfalar dahilinde tek kullanıcı hakkında uygulama yapar.

PHP Session Değişkenleri

Bir proje üzerinde çalışırken , proje açarsınız, bazı gerekli değişiklikleri yaparsınız ve sonrasında uygulamayı kapatırsınız.PHP’ de Session da aynı bu şekildedir.Bilgisayar sizin kim oldugunuzu bilir,ve uygulamalarınıza ne zaman başladığınızı ve sona erdirdiğinizi takip eder.Ama internet üzerinde bu konuda bir sorun meydana gelir; Web sunucusu sizi ve neler yaptığınızı tanıyamaz, çünkü HTTP adresi bu durumu sağlayamaz.

PHP Session , server üzerinde yapılan son uygulamayı,bilgileri(Örn; kullancı adi, alışveriş bilgileri…) yerleştirerek bu sorunu ortadan kaldırır.

Session bilgileri kullanıcı siteden ayrıldıktan sonra silinir.Eğer sürekli bir takip isterseniz veritabanına verileri kaydetmeniz mümkündür.  

Session her ziyaretçi için bir id(UID) numarası atar ve bütün bilgileri bu id e göre yerleştirir.UID numarası aynı zamanda çerezlere de kaydedilir veya URL’ e yerleştirilir.


Session BaşlatmakSession bilgilerini kaydetmeden önce, Session başlatmak gerekir.Not: session_start() fonksiyonu <html> tagından önce yazılmalıdır:

<?php session_start(); ?>

<html>

<body>

</body>

</html>

Yukarda yazılan kod kullanıcıya ait bir Session açar ve kullanıcı hakkındaki bilgileri önceki konumuzda anlattığımız gibi UID numaralarına göre kaydetmeye başlar.


Session Değişkenini Yerleştirmek$_SESSION değişkenini yerleştirmenin ve düzenleme yapmanın yolu örneğimizdedir, buyrun bakalım hemen;

<?php session_start();

//session verilerini yerlestir

$_SESSION[‘views’]=1;

?>

<html>

<body>

<?php

// session verilerini duzenle

echo “Sayfa gösterimi=”. $_SESSION[‘views’];

?>

</body>

</html>

Çıktı:

Sayfa gösterimi=1

Yukardaki örnekte , basit bir sayfa gösterim sayacı tasarladık. isset() fonksiyonu ile “views” değişkeninin kaydedildiğini kontrol edelim. “views” değişkeni yapılandırıldıysa ,sayacımızı arttırabiliriz. Eğer değişkenimiz yoksa,”views” adıyla yeniden yapılandırıyoruz ve değerini 1 olarak atıyoruz:

<?php

session_start();

if(isset($_SESSION[‘views’]))

$_SESSION[‘views’]=$_SESSION[‘views’]+1;

else

$_SESSION[‘views’]=1;

echo “Gösterim=”. $_SESSION[‘views’];

?>


Session YoketmekSession’ımızı yoketmek veya sona erdirmek için unset() yada session_destroy() fonksiyonlarını kullanacağız.Session dahilinde oluşan belirli bir değişkeni silmek için unset() fonksiyonunu kullanıyoruz;

<?php

unset($_SESSION[‘views’]);

?>

Session’a ait tüm verileri yoketmek için session_destroy() fonksiyonunu kullanıyoruz:

<?phpsession_destroy();?>

Not: session_destroy() tüm session u sıfırlar ,böylece kaydedilen tüm veriler yokolur.

5 thoughts on “PHP – Sessions

  • Yine ben 🙂 Çok soru soruyoyum ama sen tersleyene kadar vazgeçmeye niyetim yok :).
    $_SESSION fonksiyonunu kullanıyorum! Ancak bi’sayfada if $_SESSION[‘tur’]==”Yönetici” şeklinde bi sorgu yaptığımda doğru sonucu alıyorum ama başka bi sayfada $_SESSION[‘tur’] değişkeninin değişmediğinden emin olduğum halde hatta echo komutuyla da bunu kanıtladığım halde if $_SESSION[‘tur’]==”Yönetici” dğerlendirmesi doğru çalışmıyor ! yani $_SESSION[‘tur’]=”Yönetici” olduuğu halde if le bunu sorguladığımda eşit değil diye değerlendiriyor! Her iki sayfada da $_session_start(); ve ob_start komutunu kullandım. Aceba hatayı nerde yapıyorum! Ve çok şey istemiş olucam ama diğer session ile alakalı fonkisyonlara da değinirseniz sevinirim. session_cache_expire() gibi şimdi php ye sizin sayenizde başlıyor olmam ve bir proje üstünde çalışmam sebebiyle çok soru soruyorum. Umarım canınızı sıkmamışımdır! 🙂

  • estarufullah şenol, fırsat buldukça cevap veriyorum , yardımım oluyorsa ne mutlu bana.

    Bahsettiğin problemin sebeblerini kodları görmediğim için faraza anlatmak durumundayım.İki nedeni olabilir;

    1. Sebep- her sayfanın başında session_start kullandığın için , her sayfa değişimde session değişkenleri sıfırlanıyor olabilir.”session_start” komutunu yanlızca index sayfasında çalıştırıp, diğer sayfalarda değişkenleri tanıyacak şekilde bir çözüm üretmen,daha sonraları da çok işine yarayacaktır.
    2. Sebeb – çok emin değilim ama yine de aklıma geldiği için söyleyim, $_SESSION[’tur’]==”Yönetici” ifadende değişkende türkçe karakter olduğu için , tanımıyor olabilir. “Yönetici” yerine “Yonetici” kullanırsan yada integer değeri kullanırsan belki problem ortadan kalkar.

    Tavsiyem , öncelikle 2. çözümü bi dene, olmazsa ,session_start() olayında da problem yaşarsan yardımcı olmaya çalışırım.

  • Ohh Şükürler olsun, yaklaşık 8 saat tir bu sorunu çözmekle uğraşıyorum. Sorunun sebebi “ö” harfiymiş! yani ikinci seçenek! Beni bi’kaç 8 saatlik uğraştan kurtartığın için teşekkürler!

  • Çok Güzel Anlatım Teşekkürler…
    Bir sorum olacak, online üye sayısını üye giriş yaptığında $b = $mysql->sorgu(” INSERT INTO online (uye,tarih) values ($uyeid,$zaman)”); gibi kayıt edebiliyoruz, cikis yaptığında da $onlinesil=mysql_query(“DELETE FROM online WHERE uye = ‘$uye_id'”); şeklinde siliyoruz,, fakat kullanıcı çıkış yapmadan giderse bu kayıtı silmenin yolu nedir? yardımlarınız için teşekkürler…

Bir Cevap Yazın

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