Giriş

PHP'deki oturum desteği, belli bir veriyi sonraki erişimlerden korumak için kullanılır. Böylece daha özelleştirilmiş uygulamalar oluşturabilir ve sitenizin çekiciliğini arttırabilirsiniz.

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 özdevinimli olarak sizin tarafınızdan (session_start() üzerinden örtük olarak ya da session_register() ü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.

Dikkat

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.

Uyarı

Oturum verisi dizgeleştirildiğinden resource türündeki değişkenler oturumda saklanamaz.

Bilginize:

Oturumlarla çalışırken, bir değişken session_register() ile oturuma kaydedilinceye kadar veya $_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.