Bu dökümanda sizlere Php de önemli konulardan biri olan Session ( Oturum ) konusunu anlatmaya çalışacam. Öyle ki aslında Php de kullanılması temel fonksiyonlardan biridir. Php server taraflı bir dil olduğundan dolayı yapılan kodlamaların çoğunda sayfa ziyaretçisi ile bağlantılı bazı codelar gerekebilir. Fazla uzatmadan hemen konuya giriyoruz.
Php ile ilgilendiğinizi düşünerek size şu soruyu soruyorum; Daha önce hiç düşündünüzmü? Php ile sayfaya gelen ziyaretçiler sayfaya bağlı dosya veya database ile işlem yaparlar yada onlar sayfada iken açık olan bazı dosyalar nasıl diğer ziyaretçilerinkilerle karışmaz? Şöle söylersem sanırım yanlış olmaz. " Php de her ziyaretçi için bir oturum id si vardır. Bu id ziyaretçinin yaptığı işlemleri ve etkilenen dosya ve benzeri şeyleri diğer ziyaretçilerinkiler ile karışmasını en gelleyen bir numaradır."
Yazdığım dökümanlarda fazla yazdığımı kodları öğretirken uğraştırdığımı düşünenler varsa lütfen " Güncellenme sorunu, hack edilme sorunu, copy paste sorunu vs.. türünde sorunlarla uğraşan, sayfasına sağdan soldan bulma php scriptleri koyup amacı sadece kullanıcı çekmek olan sayfalardan yaralanabilirsiniz. Fazla geyik ve göndermeye girmeden hemen kodlara başlıyalım.
Her zamanki gibi öncelikle aşağıdaki kodları bir notepad aracılığıyla kaydedin.
<?
session_start();echo $PHPSESSID;
?>
Şimdi scripti çalıştırdığımız anda eğer eski bir apache web server kullanıyorsanız aşağıdaki gibi bir hata alabilirsiniz.
Warning: Undefined variable: PHPSESSID in xxxxxxxxxdosyadi.php on line 4
Bu birazda php.ini dosyanızdaki " Hata Raporlama " ayarınada bağlıdır. Sonuç olarak böyle bir hata alırsanız yada ekranda bom boş bir sayfa görürseniz yapmanız gereken tek şey sayfayı bir kez refresh etmektir.
33093b51ece6ea183a9bd1a3ffd307db
Ekranda buna benzer çok uzun bir rakam göriceksiniz. İşte bu sizin php tarafından sağlanmış olan " Session id " niz. Şimdi kodumuzu bir inceleyelim.
session_start(); // php de sayfa kullanıcısına oturum id si vermek amacıyla kullanılan komut. Adındanda anlaşılabileceği gibi kullanıcıya bir oturum başlangıcı yapmaktadır.
echo $PHPSESSID; // burada artık önceki bildiğiniz gibi echo komutu ile ekrana bastırılan $PHPSESSID değişkenini görüyoruz.
Burada anlıyacağınız gibi biz $PHPSESSID adında bir değişken tanımlamadığımız halde session_start() fonksionu bu işi bizim için yapmış oldu.
Eeee şimdi ne olmuş diyenler varsa hemen okumaya devam etsin.
Şimdi şöyle düşünün kullanıcı sizin sayfanıza ilk geldiğinde bir değişken tanımlıyorsunuz ve kullnıcı browser penceresini kapatana kadar aynı değişken her yerde geçerli oluyor.
Ne mi? Biraz daha açıklıyım şimdi düşünün sayfanın girişinde kullanıcıya bir font, bir arka plan rengi, bir şifre yada herhangi bir numara verdiniz ve kullanıcı sayfadan çıkana kadar hep aynı ayarlarla sayfanızda dolaştı bu hoş olmazmıydı. Böylece hem siz aynı kodları yazmamış olursunuz hemde kullanıcı sayfayı istediği ayarlarla dolaşır.
Anlıyacağınız 4-5 değişkenle sanki theme li bir sayfa yapmış oluyorsunuz. Bu yazıyı okuyan usta php ciler bana kızabilir, zira session id ile yapılacabilecekler bu kadar değil ilerde zamanı geldikçe anlatmaya çalışacam. Çok fazla geyik oldu yine hemen yukarıdaki kodlarımızı biraz daha geliştirelim.
<?
session_start();session_register("sayi");$sayi++;echo $sayi;
?>
Yukarıdaki kodu kaydedip çalıştırdığımız anda ekranda
1
çıktısını görücez. Şimdi 3-4 kez refresh ( yenile ) düğmesine basıp sayfayı yenileyin. Sayının git gide arttığını göreceksiniz. Şimdi herhangi bir başka sayfaya gidin mesala http://www.zeb.biz sonra tekrar geri dönün sayının hala eskisi gibi olduğunu göreceksiniz. Yani browserınız açık olduğu sürece $sayi değişkenin değeri her sayfayı okuduğunuzda bir tane artacaktır. Yukarıdaki kodları incelersek;
session_start(); // bu satırı artık öğrendik oturum açıyoruz...
session_register("sayi"); // bu satır ile browserımız açık olduğu sürece geçerli olan bir değişken tanımlıyoruz bir nevi çerez ( cookie ) yani.
$sayi++; // bu satır ile $sayi adındaki değişkenin değerini 1 tane arttırıyoruz. Eğer böle bir değişken yoksa değerini 0 ile yaratıp 1 tane arttırıyor.
echo $sayi; // bu satır ilede $sayi değişkenini ekrana bastırıyoruz.
Diyelimki $sayi değişkeninin değerini sileceğiz ve bir daha kullanmıyacağız. Bu iş için onun değerini boş yapmak yada değiştirmek pek akıllıca olmaz çünkü bu tür değişkenler hafızada yer kaplarlar. Bu yüzden en akıllıca yöntem session_unregister() komutudur.
Mesala yukarıdaki örneğe göre sayi değişkeninin değerini boşaltmak için
<?
session_start();session_register("sayi");$sayi++;echo $sayi;
session_unregister("sayi");echo $sayi;
?>
Yukarıdaki gibi kod çalıştığı zaman $sayi değişkeninin değerinin boşaldığını göreceksiniz.
Session fonksiyonları hakkında şuan için öğrenmeniz gereken temel bilgileri size sundum. Aslında session ile ilgili bir çok özellik var ama şuanda bu bilgiler ile başlamanız daha uygun olacaktır. İlerleyen zamanlarda daha gelişmiş session komutlarını " PHP Dili " dışındaki " Dökümanlar " bölümünden sizlerle paylaşıcam.
Mesala session_destroy() tüm değişkenleri yok edebili yada session_unset() komutu ile değişken içini boşaltabilirsiniz . Php dili How To dökümanlarından
session_start , session_destroy, session_name, session_module_name, session_save_path, session_id ,session_register , session_unregister , session_unset , session_is_registered , session_get_cookie_params , session_set_cookie_params , session_decode , session_encode , session_set_save_handler , session_cache_limiter
gibi session komutları ve fonksiyonları hakkında bilgi edinebilirsiniz.
Şimdi kısa biz özet yapıp dökümanı bitirelim.
---
1 - Php dili server taraflı bir dil olduğundan sayfa ziyaretçilerinin yapacakları işlemlerin birbirine karışmaması ve her kullanıcının kendi işlemlerini yapabilmesi için serverın kullanıcıyı tanıyabileceği bir oturum id si verilir. Bu id her kullanıcı için farklı bir numaradır.
2 - Kullanıcının oturumunu başlatmak için session_start() komutu kullanılır.
3 - $PHPSESSID değişkeni session_start() fonksiyonu ile otomatik olarak tanımlanan bir değişkendir.
4 - session_register() komutu ile o anki browser ın hafızasına bir değişken atanabilir ve tüm browser ömrü süresince bu değişken hafızada kalır. Üzerinde işlemler yapılabilir.
5 - session_unregister() komutu ile hafızadaki bir değişkenin değeri boşaltılabilir.
|