MySQL kullanan Session Sınıfı
Unutmadan yazmak istediğim bir kaç husus var. O yüzden de yarım birşey bırakmayım diye, tez çalışmamın içinden oturum sınıfımı çıkarıp, kullanılabilir hale getirdim. Bundan önceki yazımda mysql'in nasıl session için araç olacağını anlatmıştım. Şimdi ise bunu nasıl sınıf aracılığı ile yapacağımızı anlatalım.
Öncelikle http://www.cnylmz.net/php/session-kullanimi-27/3.html adresindeki bilgilere bakmak gerek çünkü oradakilerin üstünden gideceğim.
Tablo olarak aşağıdaki tabloyu kullanalı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`) );
Zamanla anahtar yükünün artmasından rahatsız olursanız, tavsiye etmesem de sessid alanınını anahtar olmaktan çıkarabilirsiniz..
session_set_save_handler fonksiyonunun string parametreler alarak çalıştığını görmüştük ancak fonksiyon yerine sınıf kullanacaksak, 0. indisi sınfın 1.indisi ise fonksiyonun adını taşıyacak şekilde dizi parametreler göndermemiz gerekir. Yani
"oturum_oku", "oturum_sil", "oturum_temizlik");
yerine
kullanacağız.
Bir önemli husus da şu. PHP 5.0.5 ten bu yana(php.net bilgisi) oturum bilgilerinin kaydı sınıfların yok edilmesinin ardından gelen birşeymiş. Yani biz sınıf kullanmaya çalışıyoruz ama sınıflar zaten yok edilmiş olduğundan kullanamıyoruz. O yüzden de php nin kendini sonlandırmadan önce bizim oturum bilgilerinin kaydetmesini istiyoruz. Aslında benim aklımdaki session sınıfına __destruct fonksiyonu ekleyip, yok edilme anında kayıtların yapılmasıydı. Ne var ki kayıtı da başka bir sınıf aracılığı ile yaptığımdan çalışmadı. Belki şu haliyle çalışabilir. Yine de en garantili çözüm olarak
register_shutdown_function fonksiyonunu gördüm. Bu fonksiyon ile oturum işlemlerinin sonlanmasını daha öne aldım.
Bu işler bitince de session_start(); demenin vakti geliyor. Artık session bilgilerimiz hiç bir dosyaya yazılmıyor. Tüm işlerimizi mysql hallediyor. Böylece hem session için dosya kaydetmekten, hem de online kaç kişi var görelim gibisinden bir niyetle veritabanı kullanmaktan kurtulup her işimizi tek yolla hallediyoruz.
Daha şık durması için de üstteki kodları fonksiyonumuzun oluşturulma sınıfı olan __construct() sınıfına ekliyoruz ve işimiz bitiyo. Zaten diğer fonksiyonlar bir önceki yazı da anlatılmıştır. Sınıf aşağıda umarım işinize yarar.
Dosya halinde indirmek için TIKLAYIN
Sınıfın içeriği bir sonraki sayfada yazmaktadır.

