SessionHandler sınıfıSessionHandler
&reftitle.intro;
SessionHandler, mevcut dahili PHP oturum kaydetme
işleyicisini kalıtım yoluyla oluşturmak için kullanılabilecek özel bir
sınıftır. Yedi dahili oturum kaydetme işleyicisi geriçağırımlarını
sarmalayan yedi yöntemi vardır (open,
close, read,
write, destroy,
gc ve create_sid).
Öntanımlı olarak, bu sınıf, genellikle öntanımlı değeri
files olan session.save_handler yapılandırma
yönergesi tarafından tanımlandığı gibi dahili kaydetme işleyicisine ne
atanmışsa onu sarmalar. Diğer dahili oturum kaydetme işleyicileri,
SQLite (sqlite olarak),
Memcache (memcache olarak) ve
Memcached (memcached olarak)
gibi PHP eklentileri tarafından sağlanır.
SessionHandler sınıfının düz bir örneği
session_set_save_handler kullanılarak kaydetme
işleyicisi olarak atandığında, geçerli kaydetme işleyicilerini sarmalar.
SessionHandler sınıfından genişletilen sınıf,
ebeveynin yöntemlerini geçersiz kılmanıza veya dahili PHP oturum
işleyicilerini sarmalayan ebeveyn sınıfın yöntemlerini çağırarak
genişletilen sınıfın yöntemlerini engellemenize veya filtrelemenize
olanak tanır.
Bu, örneğin, oturum verilerini şifrelemek/şifresini çözmek için
read ve write yöntemlerini
engellemenize ve ardından sonucu ebeveyn sınıfa ve ebeveyn sınıftan
iletmenize olanak tanır. Bundan başka, gc çöp
toplama geriçağırımı gibi bir yöntemi tamamen geçersiz kılmayı da
seçebilirsiniz.
SessionHandler mevcut dahili kaydetme işleyicisi
yöntemlerini sarmaladığından, yukarıdaki şifreleme örneği, işleyicilerin
iç yapısını bilmek zorunda kalmadan herhangi bir dahili kaydetme
işleyicisine uygulanabilir.
Bu sınıfı kullanmak için, önce session.save_handler ini
yönergesini kullanarak oluşturmak istediğiniz kaydetme işleyicisini atayın
ve ardından SessionHandler nesnesini veya işleyiciyi
session_set_save_handler işlevine genişleten bir
nesneyi aktarın.
Bu sınıfın geriçağırım yöntemlerinin PHP tarafından dahili olarak
çağrılmak üzere tasarlandığı, kullanıcı tarafından kod içinde kullanılmak
üzere tasarlanmadığı unutulmamalıdır. Dönüş değerleri PHP tarafından
dahili olarak işlenir. Oturum iş akışı hakkında daha fazla bilgi için
session_set_save_handler belgesine bakılabilir.
&reftitle.classsynopsis;
SessionHandlerimplementsSessionHandlerInterfaceSessionIdInterface&Methods;
&reftitle.notes;
Bu sınıf, mevcut dahili PHP oturum kaydetme işleyicisini oluşturmak
için tasarlanmıştır, eğer kendi özel kaydetme işleyicilerinizi yazmak
istiyorsanız, SessionHandler sınıfını genişletmek
yerine SessionHandlerInterface arayüzünü
gerçekleyin.
&reftitle.examples;
-
Dahili PHP oturum kaydetme işleyicilere şifreleme eklemek için
SessionHandler kullanımı
key = $key;
}
public function read($id)
{
$data = parent::read($id);
if (!$data) {
return "";
} else {
return decrypt($data, $this->key);
}
}
public function write($id, $data)
{
$data = encrypt($data, $this->key);
return parent::write($id, $data);
}
}
// yerel 'files' işleyicisini alıkoyacağız, ancak PHP eklentileri tarafından
// sağlanan 'sqlite', 'memcache' veya 'memcached' gibi diğer dahili yerel
// işleyicilerle eşit şekilde çalışacak.
ini_set('session.save_handler', 'files');
$key = 'secret_string';
$handler = new EncryptedSessionHandler($key);
session_set_save_handler($handler, true);
session_start();
// $_SESSION'daki anahtarla değerleri atamaya ve almaya devam et
]]>
Bu sınıfın yöntemleri, normal oturum iş akışının bir parçası olarak PHP
tarafından dahili olarak çağrılacak şekilde tasarlandığından, ebeveyn
yöntemlere (yani gerçek dahili yerel işleyiciler) yapılan çocuk sınıf
çağrıları, oturum gerçekten başlatılmadığı sürece (otomatik olarak veya
doğrudan session_start çağrısıyla) &false; döndürür.
Sınıf yöntemlerinin kodunuzun içinden çağrılabileceği birim denemelerini
"yaparken bunun dikkate alınması önemlidir.
&reference.session.entities.sessionhandler;