Eğer örtülü temellerini var gibi geliyor. Ancak, yapıyoruz hepsi elle, o zaman etkili sadece kendi $_SESSION
, uygulanması ve zaten sizin için tüm bu yapabileceği gerçeği yararlanarak değildir.
Bir oturumu işlemek için bir veritabanı kullanmak istiyorsanız, kendi ile işleme varsayılan oturum kılabilirsiniz. session_set_save_handler() bir göz atın. Benim apps bunu.
class SessionHandler
{
public function open($save_path, $session_name)
{
$this->sessionName = $session_name;
return(true);
}
public function close() {
//stuff
}
public function read($id) {
$expiretime = date("Y-m-d H:i:s",time() - $this->maxLifeTime);
$sql = "SELECT * FROM sessions where sessionid='".$this->db->escapeData($id)."' AND lastupdated>='".$expiretime."' LIMIT 1";
$result = $this->db->query($sql);
//etc.
}
//etc.
public function setAsSessionHandler()
{
session_set_save_handler(
array($this,'open'),
array($this,'close'),
array($this,'read'),
array($this,'write'),
array($this,'destroy'),
array($this,'gc')
);
}
}
$sessionHandler = new SessionHandler();
$sessionHandler->setAsSessionHandler();
Sen sadece bu kullanarak kendinizi uygulanan ettik açıklanan tüm özelliğe sahip, ama yine de sizin için bunu yapmak için $ _SESSION güç olabilir.
Bunu başlamadan önce oturumu hala geçerli olup olmadığını görmek için bir IP kontrolünü eklemek istedim Örneğin, sen "açık" işlevinin bir parçası olarak bu ekleyebilirsiniz. (Eğer olmaz ki), sen 'yazma' işlevi bunu başarabilir on farklı veritabanlarına oturum verilerini yazmak istedim.
Bu işlevler tüm $ _SESSION nasıl kullandığınıza dayalı kullanılan ve basit bir sınıfa koyarak, bunu çok etkili çalışıyor nasıl yönetebilirsiniz.
Sen session id okuma / yazma / fonksiyonları yok etmek için geçirilen bir parametre olduğunu ve hala GUID nesil rutin kullanarak bu aynı şekilde yönetmek edeceğiz görürsünüz. Ancak, bu oturumun yöneticisi sınıfa guid nesil ve kontrolleri sopa ve sadece açık () işlevi bunları yapmak zorunda. Merkezi, no muss, hayır gürültü patırtı.