Session Kullanımı

Session yani oturum sayfalar arasın veri akışı için kullanılan ve genellikle geçici bir klasör içerisinde dosya oluşturarak çalışan bir yöntemdir. Bir ziyaretçi için kaydedilen veriler, yine aynı ziyaretçi tarafından her sayfada erişilebilir. "session_start()" "session_destroy()" fonksiyonları ve "$_SESSION" süper global değişkeni giriş düzeyinde bize yeterli olacaktır.


Sunucumuzda oturum açılması otomatik değilse, yani session.auto_start On değilse, oturumun açılacağı ve oturum bilgilerinin kullanılacağı her dosyada session_start(); fonksiyonunu çalıştırmamız gerekir. Fonksiyon çağırıldığında, ziyaretçiye özel bir takip numarası(session_id) verilir. Bu takip numarası, adres satırında bir $_GET degeri olarak taşınabilme özelliğine sahip olsa da, genellikle çerez(cookie) ile kullanıcı bilgisayarına kaydedilir. Çerezler kullanıcılara ancak header(dosya niteliklerini tarayıcıya bildiren kısım) bilgileri ile gönderileceğinden, muhakkak </head> tagından önce yazılmalıdır. Ben hiç "</head>" tagı kullanmayım o halde deme gibi bir lüksünüz yok çünkü tarayıcıya giden, header bilgileri hariç ilk veriyle beraer, header bilgilerinin son bulduğu kabul edilir. Yani ekrana bir boşluk koysanız veya enter ile alt satıra geçseniz dahi sorun yaşarsınız. Bu yüzden sayfanın en başına ya session_start(); yazarak oturumu açın ya da ob_start(); ekleyin ki tarayıya bilgiler gönderilmeden önce tampona kaydedilsin.Böylece sessionı istediğiniz yerde açabilesiniz.

Şartlar sağlandıysa artık oturumumuzu sorunsuz kullanabiliriz. $_SESSION değişkenine atadığımız değerler artık session dosyasına kayıt edilecektir.

PHP kodu
  1. <?php
  2. // kayit.php dosyasi
  3. $_SESSION['ip']=getenv('REMOTE_ADDR');
  4. echo 'IP adresiniz kayıt edildi';
  5. ?>

yukarıda verilen kayit.php dosyasına erişen bir kişinin ip adresi o an kaydedilir ve oturum sonlanmadığı sürece
PHP kodu
  1. <?php
  2. // ornek.php dosyasi
  3. echo 'IP adresiniz:'. $_SESSION['ip'];
  4. ?>

ornek.php dosyasını çağırdıkça ip adresini görebilir.

PHP kodu
  1. <?php
  2. // cikis.php dosyasi
  3. echo 'Oturum bilgileriniz silindi';
  4. ?>

cikis.php dosyası da oturum sonlandığını ve verilen silinmesi gerektiğini söyler.
Burada atlamamanız gereken şey, sonlandırmak için bile oturumun başlatılması şarttır. eğer cikis.php de session_start(); fonksiyonu çağırılmamış olsaydı oturum bilgileri silinmezdi.

Sonraki Sayfa: Güvenli Session uygulama örnekleri

1 2 3


Session Kullanımı Oy Sayısı: 25 Puan: 8.64/ 10.00

Etiketler

session kullanimi , php session kullanimi , c session kullanimi , session php kullanimi , php de session kullanimi , session kullanimi php , session suresini uzatma , php session ornekleri , session ornekleri , php session ornek kod ,

deathisonitsway03 Ocak 2010 Pazar 08:30:40


@ dosyayı calıstırdıgımda session-cannot header gibi bir hata alıyorum diyorsanız...bunun cozumu olarak konuda da gectiği gibi ; dosyanızın en ustune <? ob_Start(); ?> koyun ki, http çıktısını tampona kaşelemiş olun (flush)


emin07 Ocak 2010 Perşembe 23:37:42


tebrik ederim güzel makale olmuş session konusunda birazdağa bilgi sahibi oldum. sınıflarla veri tabanı kullanarak nasıl oturum kontrolu yapılacağı hakkında bir makale yazarsanız memnun olurum . ayrıca sormak istediğim 2 soru var. bazıları çerez kullanarak yapıyor bu oturum kontrollerini.kimisi sadece sesson kullanarak yapıyor bazısı ise hem sesson hemde çerezleri birlikte kullanıyor. sorum şu sizce sağlam bir sitede oturum kontrolü nasıl olmalıdır. teşekkürler...


Gündüz Can YILMAZ08 Ocak 2010 Cuma 16:18:02


Kullanıcı idsi, yetkisi, gerekiyorsa hash leri gibi bilgilerin sessionda tutulması daha güvenli olur ama saglam bir hash olusturduktan sonra çerez kullanımının da sakıncası olmaz. Kullanıcı çerezini çaldırırsa bile çerezin kullanımına izin verilemeyecek şekilde hashleyebilirisiniz. md5('!SEYRANLI!'.$_SERVER['REMOTE_ADDR'].$sifre); şeklindeki bir hash i çerez için de kullanabilirsiniz.


alper Gezgin02 Kasım 2010 Salı 04:44:25


merhabalar verdiğiniz bilgiler için teşekkür ederim.
hash ilkkez bu makalede gördüm ve localhostta denediğimde hata verdi, sunucuda ise sayfayı açmadı.

hash kullanmak için ne yapmak lazım. ikincisi ise
hash yerine kişinin ip adresini databaseye kaydetsek ve databasedeki veriye göre o olup olmadığnı anlasam güvenlik açığı olurmu?


Gündüz Can YILMAZ02 Kasım 2010 Salı 04:49:27


sayfa açmadığında da hata vermiştir ama ne hatası olduğunu görmeden neden olduğu hakkında fikir yürütmem zor.

ip yi veritabanına da kaydedebilrisiniz tabi ancak derme çatma bi yapı olur. kodlardaki hash zaten deneme amaçlı idi, aslında $_SESSION['ip']=$_SERVER['REMOTE_ADDR']; olarak kaydetmeniz yeterli. kontrol yaparken de if($_SESSION['ip']!=$_SERVER['REMOTE_ADDR'])die.... şeklinde ip nin doğruluğundan emin olabilirsiniz


Alper Gezgin17 Kasım 2010 Çarşamba 04:18:30


Sayın Yılmaz Cevab için teşekkür ederim gösterdiğiniz gibi ip kontrolü ile yapmak daha iyi gibi geldi bana.

birde localhost da hata veriyor demiştim hata mesajı şu şekilde;

Parse error: parse error, unexpected T_RETURN in C:AppServwwwlogin.php on line 1

dediğim gibi sunucuya atınca hata vermedi ama sayfada bir işlem yapmadı bembayaz sayfa çıktı.

bu hatanın sebebini bulamadım eğer siz biliyorsanız yazarsanız çok daha iyi olur ne de olsa bir çok kişide bu hata mesajı ile karşılaştığnıda düşünmek gerek.


ali şahinöz25 Mart 2011 Cuma 06:49:23


ben hiç bir şey anlamadın


Caner Sonmez02 Mart 2012 Cuma 07:26:49


Merhabalar,
mysql_affected_rows kisminda hata aliyorum surekli, oku fonksiyonundan kaynaklaniyor sanirim.

Ama sorun bundan baska bir sey;

Gelen session_id yi sabitledikten sonra rasgele bir kelime ile birlestirip tekrar sha1 ile sifrelesem ve bu bilgiyi uyenin id si ve ip adresi ile birlikte veritabaninda bir tabloya yazsam ve sitede giris basarili veya degil kontrollerini de burdaki tablodaki degerlere gore yapsam yeterli guvenligi saglamis olur muyum?

aslinda su anda izledigim yol su sekilde:
uye giris icin post yapiyor gidip veritabanindan sifre ve kullanici adi eslestirmelerine bakiyor eger basarili ise
$_SESSION['Level']="1"; diye bir degisken tum sayfalarda geziyor. Uye girisi istenen yerlerde sorguladigim sey ise $_SESSION['LEVEL'] > 0 mi kontrolu oluyor.

Guvenlik adina ne asamada bu soylediklerim merak ediyorum, vaktiniz icin tesekkurler.


Gündüz Can YILMAZ02 Mart 2012 Cuma 09:09:51


Ben genelde yalnızca ip kaydettiriyorum ancak admin paneli gibi daha özel alanlarda şifre kontrolü de yapıyorum ki şifre değişiminde anında sessiondan düşsün diye. level'in yanında ip de tutmanız sanıyorum kafi olacaktır.




Yorumunuz