PHP'deki oturum desteği, belli bir veriyi sonraki erişimlerden korumak için kullanılır.
Sitenize gelen her ziyaretçiye eşsiz bir kimlik atanır, buna oturum kimliği diyoruz. Bu kimlik istemci tarafında bir çerezde ya da doğrudan URL üzerinde saklanır.
Oturum desteği, $_SESSION dizisindeki istekler arasında veri saklamanızı sağlar. PHP otomatik olarak sizin tarafınızdan (session_start() üzerinden doğrudan) veya sitenize bir ziyaretçi geldiğinde karşı taraftan (session.auto_start 1 ise) istekle beraber oturuma özgü bir oturum kimliği gönderilip gönderilmediğine bakar. Gönderilmişse evvelce o oturum adına saklanmış ortam yeniden oluşturulur.
session.auto_start
yönergesinin değeri On
olduğu takdirde nesneleri
oturumunuza sınıf tanımını yüklemek suretiyle koymak isterseniz bunu
yapmanın tek yolu sınıf tanımını
auto_prepend_file kullanarak
yüklemektir. Aksi takdirde oturumunuza nesneleri koymak için nesnenizi
önce serialize() ile dizgeleştirmek daha sonra
unserialize() ile nesneleştirmek zorundasınız.
$_SESSION ve kayıtlı tüm değişkenler istek bittiğinde PHP tarafından session.serialize_handler yönergesinde belirtilen dizgeleştirme eylemcisi kullanılarak dahili olarak dizgeleştirilir. Oturuma kayıtlı değişkenlerden tanımsız olanlar tanımsız olarak imlenir. Sonraki erişimlerde kullanıcı bunları tanımlamadıça oturum modülü tarafından tanımsız olarak ele alınırlar.
Oturum verisi dizgeleştirildiğinden resource türündeki değişkenler oturumda saklanamaz.
Dizgeleştirme işleyicileri (php
ve
php_binary
) register_globals sınırlamalarını devralır.
Bu nedenle, sayısal veya dize indisi içeren özel karakterler
(|
ve !
) kullanılamaz. Bunların
kullanılması, komut dosyası kapatılırken hatalarla sonuçlanacaktır.
php_serialize
için bu tür sınırlamalar yoktur.
Bilginize:
Oturumlarla çalışırken, $_SESSION süper küresel dizisine yeni bir anahtar ekleninceye kadar bir oturum kaydının oluşturulmayacağına dikkat ediniz. Oturumu session_start() ile başlatsanız bile bu durum değişmez.
Bilginize:
PHP 5.2.2'de devreye giren ve PHP 5.3.0 sürümünde kaldırılan henüz belgelenmemiş bir özellik sayesinde oturum dosyaları "/tmp" dizininde ("/tmp" izin verilen dosya yollarına doğrudan eklenmiş olmasa da open_basedir) ile etkin kılınmasa da) saklanabilmekteydi.