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.
Session'a verinin nasıl ekleneceğini, nasıl bir hash tutulması gerektiğini artık bildiğimizi varsayarak, dikkatimizi session için yaptığım tanımıma çekmek istiyorum.
"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."
Tanımda vurgulamak istediğim bir şey vardı, session kendi yöntemiyle çalışmak zorunda değildir.
session_save_handler adında bir fonksiyon var. Oldukça önemli güzel de bir fonksiyon. Bu fonksiyonla oturum üzerindeki işlemleri kendi dilediğimiz gibi yaptırabiliriz. Nasıl yani???
Önce veritabanımızı oluşturalım
CREATE TABLE IF NOT EXISTS `oturum` ( `sessid` varchar(255) NOT NULL, `sonerisim` int(10) UNSIGNED NOT NULL DEFAULT '0', `veri` text, PRIMARY KEY (`sessid`) );
Şimdi de az önce bahsettiğimi gerçekleştirelim
<?php // oturum_fonksiyonlari.php dosyası function oturum_ac($depo,$oturum_ismi){ /* depo dosyaların tutulduğu klasör oturum ismi de PHPSESSID ama biz bunları kullanmayacaz */ global $baglanti; include('db_ayarlari.php.inc'); if($baglanti) { if(!$dbselect) { $baglanti = $dbselect; } return $baglanti; } return false; } return $baglanti; } function oturum_kapat() { global $baglanti; } function oturum_oku($sessid) { global $baglanti; $sorgu = mysql_query("SELECT veri FROM oturum WHERE sessid = '".mysql_real_escape_string($sessid)."' LIMIT 1"); if($sorgu!==false) { // veri okunduğunda da oturum süresi uzatılması istenirse mysql_query("UPDATE oturum SET sonerisim=".time()." WHERE sessid = '".mysql_real_escape_string($sessid)."' LIMIT 1"); $return $veridb['veri']; } return false; } function oturum_yaz($sessid,$veri){ global $baglanti; mysql_query("REPLACE INTO oturum SET sessid = '".mysql_real_escape_string($sessid)."', sonerisim = ".time().", veri = '".mysql_real_escape_string($veri)."'",$baglanti); } function oturum_sil($sessid) { global $baglanti; } function oturum_temizlik($gecerlilik_suresi){ global $baglanti; } ?>
Bütün gerekli şeyleri yaptığımıza göre artık esas fonksiyonumuzu çalıştırıp, oturumu dosyalarla değil, veritabanıyla yönetmenin gururunu yaşayabiliriz :)
<?php include('oturum_fonksiyonlari.php'); session_set_save_handler("oturum_ac", "oturum_kapat", "oturum_oku", "oturum_oku", "oturum_sil", "oturum_temizlik"); $_SESSION['seyranli']='Okuduğunuz için teşekkür ederim'; ?>
Veritabanına baktığınızda oturum tablosunda beni görebilrisiniz :)
Fonksiyonlarla yapıldığında bu şekilde oluyo. Sınıflarla yaparken dikkat edilmesi gereken ufak şeyler var. Bu kadar yazdım madem, kodları bir arada toplayıp sınıf olarak sunarım. Sınıf kullanımını anlatırken o dikkat edilecek hususlar neydi, ne yaptım gibisinden bahsederim.

